db2 的 遞迴查詢 使用 WITH

2021-05-02 03:27:28 字數 758 閱讀 9686

rpl 作為乙個具有以下三列的虛擬表:

表結構 : pid、id 和 name。

with 子句內的第乙個 select 語句是初始化表。它只執行一次。它的結果形成虛擬表的初始內容以作為遞迴的種子。在上面的示例中,種子是 pid 為 8 的一行或多行。

第二個 select 語句執行多次。將種子作為輸入(join 中的輔助表)傳遞給第二個 select 語句以產生下乙個行集合。將 join 的結果新增(union all)到虛擬表的當前內容中,並放回到其中以形成用於下一次傳遞的輸入。只要有行產生,這個過程就會繼續。

*****===

**:with rpl (pid, id, name) as        

(        

select root.pid, root.id, root.name        

from regr root        

where root.pid = 8   

union all       

select child.pid, child.id, child.name

from rpl parent, regr child

where parent.id = child.pid )

select distinct pid, id, name        

from rpl

order by pid, id, name

虛擬表上最後的 select 允許我們選擇遞迴查詢所產生的所有行或僅部分行

DB2遞迴查詢

遞迴 sql 在 db2 中通過公共表表示式 cte,common table expression 來實現。遞迴 sql 由遞迴 cte 以及對遞迴 cte 結果的查詢組成。那什麼是遞迴 cte 呢?簡言之,如果 cte 中的 fullselect 在 from 子句中引用到 cte 本身,就是遞...

關於DB2的使用(DB2資料命令)

公司所用的資料庫有金倉和db2 首先要用命令視窗直接開啟db2需要在cmd中輸入 db2cmd 1 啟動db2資料庫 db2start 2 連線資料庫 db2 connect to 資料庫名稱 3 建立資料庫 db2 create db 資料庫名稱 4 刪除資料庫 db2 drop db 資料庫名稱...

DB2 遞迴SQL寫法

with temptab pro komcode,pro komcode o,pro sup code as select root.pro komcode,root.pro komcode o,root.pro sup code from product root where pro komcod...