1. 程式人生 > >Oracle用Start with...Connect By子句遞迴查詢

Oracle用Start with...Connect By子句遞迴查詢

ORACLE 提供了一個有趣的功能 connect by 子句,它可以對具有家族樹結構的分枝進行排序。它的用途有機構或公司的各層結構,財務的科目程式碼等。

要使用查詢遍歷,需要在將資料在基表中按照層次結構進行儲存。比如一個組織機構就是這樣的典型例子。

實現語句:
SELECT column
FROM table_name
START WITH column=value
CONNECT BY PRIOR 
父主鍵=子外來鍵

網上有朋友已經給了一個簡潔的例子,就直接引用他的例子如下:
——————————————————————————————————————

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 從末梢往樹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