1. 程式人生 > 實用技巧 >oracle中的遞迴查詢語句

oracle中的遞迴查詢語句

  建立一個demo表 department:

create table department (
 code VARCHAR2(10) not null,
 name VARCHAR2(50),
 pcode VARCHAR2(10),
 mgrname VARCHAR2(50)
);
insert into department values('ROOT','頂級部門', null, 'R大大');
insert into department values('A','A部門', 'ROOT', 'A老大');
insert into department values('A01','A01部門', 'A', 'A01老大');
insert into department values('A02','A02部門', 'A', 'A02老大');
insert into department values('B','B部門', 'ROOT', 'B老大');
insert into department values('B01','B01部門', 'B', 'B01老大');
insert into department values('B02','B02部門', 'B', 'B02老大');

1.遞迴查詢某個部門的所有子級部門: 

select t.* from department t start with t.code='ROOT' connect by prior t.code = t.pcode ;

  查詢結果:

  

2.遞迴查詢某個部門的所有上級部門:

select t.* from department t start with t.code='B02' connect by t.code = prior t.pcode ;

  查詢結果: