對於大多數的程序員 遇到級聯查詢的概率很高 今兒寫一下級聯查詢的sql 網上也有一些 我做一下 自己的總結
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');
--------------------------------------------------------------------------------------------------
ID NAME PID
1 10 0
2 11 1
3 20 0
4 12 1
5 121 2
----------------------------------------------------------------------------------------------------
從Root往樹末梢遞歸
select * from TBL_TEST
start with id=1
connect by prior id = pid
注:(start with id = 1 表示的是 以1爲根節點的樹 從跟到葉的查詢 此查詢語句 爲 一顆樹 , PRIOR表示上一條記錄,比如 CONNECT BY PRIOR ID=PID就是說上一條記錄的ID是本條記錄的PRAENTID,即本記錄的父親是上一條記錄。 從而 判定 查詢順序 爲 從跟到葉)
查詢結果
ID NAME PID
1 10 0
2 11 1
5 121 2
4 12 1
-----------------------------------------------------------------------------------------------------
從末梢往樹ROOT遞歸
select * from TBL_TEST
start with id=5
connect by prior pid = id
上一條記錄的 父節點 爲本記錄的 節點 既 此查詢出來的 爲一顆倒樹 既從葉到跟的順序
運行結果:
ID NAME PID
5 12 1
2 1 1
1 1 0
本文 主要是對 http://www.poluoluo.com/jzxy/201004/81956.html 文章進行補充