Oracle中的遞歸查詢語句爲start with .... connect by prior,爲中序遍歷算法。算法
基本語法是:spa
select * from tablename遞歸
start with 條件1it
connect by 條件2io
where 條件3table
- 條件1: 是根結點的限定語句,固然能夠放寬限定條件,以遍歷多個根結點,實際就是多棵樹。
- 條件2:是鏈接條件,其中用PRIOR表示上一條記錄。
好比connect by prior id = parent_id就是說上一條記錄的Id 是本條記錄的Parent_Id。
- 條件3:過濾返回的結果集。
PRIOR關鍵字select
運算符PRIOR被放置於等號先後的位置,決定着查詢時的檢索順序。遍歷
- PRIOR被置於CONNECT BY子句中等號的前面時,則強制從根節點到葉節點的順序檢索,爲自頂向下查找。
如:connect by prior id = parent_id
- PIROR運算符被置於CONNECT BY 子句中等號的後面時,則強制從葉節點到根節點的順序檢索,爲自底向上的查找。
如:connect by id = prior parent_id
PS:當CONNECT BY後指定多個鏈接條件時,每一個條件都應指定prior關鍵字語法