DB2遞迴查詢

2021-09-01 19:02:03 字數 658 閱讀 5396

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

如有一張表:

create table node( 

id integer not null,

parent_id integer not null);

查詢sql:

with temp(id,parent_id,level) 

as ( select id,parent_id,0

from node

where parent_id = 0

union all

select b.id,b.parent_id,a.level+1

from temp a,node b

where b.id= a.parent_id

) select * from temp;

其中紅色部分是出師資料的查詢條件,其中藍色部分是查詢出來資料的級別。

可參考:

db2 的 遞迴查詢 使用 WITH

rpl 作為乙個具有以下三列的虛擬表 表結構 pid id 和 name。with 子句內的第乙個 select 語句是初始化表。它只執行一次。它的結果形成虛擬表的初始內容以作為遞迴的種子。在上面的示例中,種子是 pid 為 8 的一行或多行。第二個 select 語句執行多次。將種子作為輸入 jo...

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

DB2 物化查詢表

start db2 物化查詢表mqt materialized query tables 儲存了乙個查詢的結果,當我們查詢相關表時,db2會自動決定是使用原表還是使用物化查詢表。當資料庫中有海量資料時,使用物化查詢表可以極大的提高查詢速度。但是,有一利就有一弊,維護物化查詢表也是相當耗時的。所以,物...