Oracle用Start with...Connect By子句遞迴查詢
阿新 • • 發佈:2019-02-08
ORACLE 提供了一個有趣的功能 connect by 子句,它可以對具有家族樹結構的分枝進行排序。它的用途有機構或公司的各層結構,財務的科目程式碼等。
要使用查詢遍歷,需要在將資料在基表中按照層次結構進行儲存。比如一個組織機構就是這樣的典型例子。
實現語句:
SELECT column
FROM table_name
START WITH column=value
CONNECT BY PRIOR 父主鍵=子外來鍵
網上有朋友已經給了一個簡潔的例子,就直接引用他的例子如下:
——————————————————————————————————————
(
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 從末梢往樹ROOT遞迴 select * from TBL_TEST
start with id=5
connect by prior pid = id
例子出處:http://blog.csdn.net/54powerman/archive/2006/04/03/649068.aspx