Oracle 递归函数 start with ..... connect by prior

select ... from tableName
where Conditional1
start with  Conditional2
connect by Conditional3
;

<Conditional-1>:过滤条件,用于对返回的所有记录进行过滤。
<Conditional-2>:查询结果重起始根结点的限定条件。
<Conditional-3>:连接条件

 

例如:

数据库表结构如下:

create table t2(
root_id number,
id number,
name varchar(5),
description varchar(10)
);

insert into t2(root_id,id,name,description)values(0,1,'a','aaa');
insert into t2(root_id,id,name,description)values(1,2,'a1','aaa1');
insert into t2(root_id,id,name,description)values(1,3,'a2','aaa2');
insert into t2(root_id,id,name,description)values(0,4,'b','bbb');
insert into t2(root_id,id,name,description)values(4,5,'b1','bbb1');
insert into t2(root_id,id,name,description)values(4,6,'b2','bbb2');

insert into t2(root_id,id,name,description)values(1,7,'a1','aaa1');
insert into t2(root_id,id,name,description)values(2,8,'a2','aaa2');
insert into t2(root_id,id,name,description)values(3,9,'b','bbb');
insert into t2(root_id,id,name,description)values(4,10,'b1','bbb1');

select * from t2  where 1=1 start with root_id=0 connect by prior id=root_id得到所有数据

select * from t2  where 1=1 start with id=1 connect by prior id=root_id

select * from t2 start with id=4 connect by prior id=root_id

 

如果不加上 prior 说明不进行下级的递归

如:select * from t2 start with id=4 connect by id=root_id

 

posted on 2013-04-26 11:31  peter.peng  阅读(242)  评论(0)    收藏  举报