Start With (樹查詢)
基本語法如下:
SELECT ... FROM + 表名 WHERE + 條件3 START WITH + 條件1 CONNECT BY PRIOR + 條件2 --示例 Select * From DEMO Start With ID = '00001' Connect By Prior ID = PID
條件1: 表示從哪個節點開始查找, 也就是通過條件1 查詢到的數據, 作為后續查詢的起始節點(參數).
當然可以放寬限定條件,如 ID in ('00001', '00011')以取得多個根節點,也就是多棵樹;在連接關系中,除了可以使用列明外,還允許使用列表達式。
如果省略Start With
就默認把所有滿足查詢條件的Tree整個表中的數據從頭到尾遍歷一次,每一個數據做一次根,然后遍歷樹中其他節點信息.
條件2: 是連接條件,其中用PRIOR表示上一條記錄,例如CONNECT BY PRIOR ID = PID,意思就是上一條記錄的ID是本條記錄的PID,即本記錄的父親是上一條記錄。CONNECT BY子句說明每行數據將是按照層次順序檢索,並規定將表中的數據連入樹形結構的關系中。
Prior 在父節點的一側表示, 自底向上查, 在 子節點的一側表示 自上向下查詢;
條件3: 不能用在 Connect By 后, 這里的條件判斷, 等價於 在最后查詢出結果列表之后, 再進行條件篩選; 並非 刪除掉 節點及子節點;