获安妥月全很多天期:
SELECT TRUNC (SYSDATE, "MM") + ROWNUM - 1
FROM DUAL
CONNECT BY ROWNUM <= TO_NUMBER (TO_CHAR
(LAST_DAY (SYSDATE), "dd"))
http://space.itpub.net/23650854/viewspace-693105>
Oracle Connect By用法
上一篇> / 下一篇> 2011-04-20
22:23:23 / 个人分类:oracle>
查看( 909
)> / 评论( 0
)> / 评分( 0 / 0 )>
oracle>中的select语句可以用START
WITH...CONNECT BY PRIOR子句真现递归查询,connect by
是布局化查询中用到的,其根基语法是:
select ...
from
where
start with
connect by
;
:过滤前提,用于对返回的全数记录进止过滤。
:查询成果重起始根结面的限定前提。
:连接前提
|
举例
数据构造布局以下图:
|----a-----a-a
| |--a-b
| |--a-c----a-c-a
|
|
|----b-----b-a
|
|--b-b
表布局以下:
CREATE
TABLE TREE
(ID
NUMBER,
ROOT_ID NUMBER,
NAME
VARCHAR2(5 BYTE)
)
|
ID |
ROOT_ID |
NAME |
|
1 |
0 |
a |
|
2 |
1 |
a-a |
|
3 |
1 |
a-b |
|
4 |
0 |
b |
|
5 |
4 |
b-a |
|
6 |
4 |
b-b |
|
7 |
1 |
a-c |
|
8 |
7 |
a-c-a |
获得无缺树(从Root往树末梢递归):
select *
from TREE
start with root_id = 0
connect by prior id = root_id;
|
ROOT_ID |
ID |
NAME |
|
0 |
1 |
a |
|
1 |
2 |
a-a |
|
1 |
3 |
a-b |
|
1 |
7 |
a-c |
|
7 |
8 |
a-c-a |
|
0 |
4 |
b |
|
4 |
5 |
b-a |
|
4 |
6 |
b-b |
|----a-----a-a
| |--a-b
| |--a-c----a-c-a
|
|
|----b-----b-a
|
|--b-b
获得特定子树:
select *
from TREE
start with id = 1
connect by prior id = root_id;
|
ROOT_ID |
ID |
NAME |
|
0 |
1 |
a |
|
1 |
2 |
a-a |
|
1 |
3 |
a-b |
|
1 |
7 |
a-c |
|
7 |
8 |
a-c-a |
|----a-----a-a
| |--a-b
| |--a-c----a-c-a
select * from TREE
start with id = 4
connect by prior id = root_id;
|
ROOT_ID |
ID |
NAME |
|
0 |
4 |
b |
|
4 |
5 |
b-a |
|
4 |
6 |
b-b |
|----a-----a-a
| |--a-b
| |--a-c----a-c-a
假设connect by
prior中的prior被省略,则查询将没有进止深层递归。
select *
from TREE
start with root_id = 0
connect by id = root_id;
|
ROOT_ID |
ID |
NAME |
|
0 |
1 |
a |
|
0 |
4 |
b |
|----a
|----b
select *
from TREE
start with root_id = 1
connect by id = root_id;
|
ROOT_ID |
ID |
NAME |
|
1 |
7 |
a-c |
|
1 |
2 |
a-a |
|
1 |
3 |
a-b |
|----a-a
|----a-b
|----a-c
从末梢往树ROOT递归
select *
from TREE
start with id=8
connect by prior root_id= id
|
ID |
ROOT_ID |
NAME |
|
8 |
7 |
a-c-a |
|
7 |
1 |
a-c |
|
1 |
0 |
a |
a-c-a--------a-c--------a
参考:
Oracle Connect By用法>
Oracle用Start with...Connect By子句递归查询>