Oracle用Start with...Connect By子句递归查询
Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用。
创建示例表:
CREATE TABLE TBL_TEST
(
ID NUMBER,
NAME VARCHAR2(100 BYTE),
PID NUMBER DEFAULT 0
);
插入测试数据:
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(1,10,0);
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(2,11,1);
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(3,20,0);
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(4,12,1);
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(5,121,2);
--从Root往树末梢递归
select * from TBL_TEST
start with id=1
connect by prior id = pid;
--ID NAME PID
--1 10 0
--2 11 1
--5 121 2
--4 12 1
select * from TBL_TEST
start with id=1
connect by prior pid = id;
--ID NAME PID
--1 10 0
select * from TBL_TEST
start with pid=1
connect by prior id = pid;
--ID NAME PID
--2 11 1
--5 121 2
--4 12 1
select * from TBL_TEST
start with pid=1
connect by prior pid = id;
--ID NAME PID
--2 11 1
--1 10 0
--4 12 1
--1 10 0
--从末梢往树ROOT递归
select * from TBL_TEST
start with id=5
connect by prior pid = ID;
--ID NAME PID
--5 121 2
--2 11 1
--1 10 0
select * from TBL_TEST
start with id=5
connect by prior id = pID;
--ID NAME PID
--5 121 2