db2和oracle中的樹查詢(遞歸查詢)語句-
在db2和oracle中的對樹的遞歸查詢語句。表結構:
節點
根節點
父節點
節點名稱
父節點
(父節點的)子節點
(父節點的子節點的)孫子節點
父節點
(父節點的)子節點
根節點()
父節點()
(父節點的)子節點()
(父節點的子節點的)孫子節點()
父節點()
(父節點的)子節點()
讓我們研究這個查詢語句:
RPL 作為一個具有以下三列的虛擬表: 和 。
WITH 子句內的第一個 SELECT 語句是初始化表。它隻執行一次。它的結果形成虛擬表的初始內容以作為遞歸的種子。在上麵的示例中,種子是 為 任意傳進去的參數 的一行或多行。
第 二個 SELECT 語句執行多次。將種子作為輸入(JOIN 中的輔助表)傳遞給第二個 SELECT 語句以產生下一個行集合。將 JOIN 的結果添加(UNION ALL)到虛擬表的當前內容中,並放回到其中以形成用於下一次傳遞的輸入。隻要有行產生,這個過程就會繼續。
如果期望,虛擬表上最後的 SELECT 允許我們選擇遞歸查詢所產生的所有行或僅部分行。
的查詢語句:
讓我們研究這個查詢語句:
本語句實際上是 start with ...connect by 的用法, start with 後麵所跟的就是就是遞歸的種子。在上麵的示例中,種子是 為 任意傳進去的參數
後麵的""如果缺省:則隻能查詢到符合條件的起始行,並不進行遞歸查詢;
後麵所放的字段是有關係的,它指明了查詢的方向。如果後麵放的是則表明從本節點查向葉子節點;如果後麵放的是則表明從根節點查向本節點; 文章轉自莊周夢蝶 ,原文發布時間5.17
最後更新:2017-05-17 12:01:57