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...