Oracle "CONNECT BY"的使用

来源:互联网 发布:php企业源码 编辑:程序博客网 时间:2024/05/21 09:40

connect by 是层次查询子句,一般用于树状或层次结果集的查询。
语法: 
select ... from table start with 条件1 
connect by prior 条件2 
where 条件3; 
 其中: 
     条件1 是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。 
     条件2 是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR org_id = parent_id就是说上一条记录的org_id 是本条记录的parent_id,即本记录的父亲是上一条记录。 
     条件3 是过滤条件,用于对返回的所有记录进行过滤。 
例子:

create table a

(

 id number not null, --id

pid   number ,-- 父id

name varchar2(20)  --名称

)

insert into a  values (1,0,"中国")

insert into a  values (2,1,"广东")

insert into a  values (3,1,"湖南")

insert into a  values (4,1,"江苏")

insert into a  values (5,2,"深圳")

insert into a  values (6,2,"广州")

insert into a  values (7,3,"郴州")

sql:

  select * from a start with id=1 connect by prior id = pid;

显示结果为数状

id    pid      name

1      0      中国

2      1         广东

5      2            深圳

6      2            广州

3      1         湖南

7      3            郴州

4      1        江苏





原创粉丝点击