使用公用表表示式的遞迴查詢

2022-04-09 12:05:32 字數 852 閱讀 8169

微軟從sql2005起引入了cte(common table expression)以強化t-sql。

公用表表示式 (cte) 具有乙個重要的優點,那就是能夠引用其自身,從而建立遞迴 cte。遞迴 cte 是乙個重複執行初始 cte 以返回資料子集直到獲取完整結果集的公用表表示式。

當某個查詢引用遞迴 cte 時,它即被稱為遞迴查詢。遞迴查詢通常用於返回分層資料,例如:顯示某個組織圖中的雇員或物料清單方案(其中父級產品有乙個或多個元件,而那些元件可能還有子元件,或者是其他父級產品的元件)中的資料。

遞迴 cte 可以極大地簡化在 select、insert、update、delete 或 create view 語句中執行遞迴查詢所需的**。在 sql server 的早期版本中,遞迴查詢通常需要使用臨時表、游標和邏輯來控制遞迴步驟流。有關公用表表示式的詳細資訊,請參閱使用公用表表示式。

偽**和語義

————————————————————————————

遞迴 cte 結構必須至少包含乙個定位點成員和乙個遞迴成員。以下偽**顯示了包含乙個定位點成員和乙個遞迴成員的簡單遞迴 cte 的元件。

with cte_name ( column_name [,...n] )

as (

cte_query_definition –- anchor member is defined.

union all

cte_query_definition –- recursive member is defined referencing cte_name.

) -- statement using the cte

select * from cte_name

遞迴執行的語義如下:

使用公用表表示式的遞迴查詢(CTE)

公用表表示式 cte 具有乙個重要的優點,那就是能夠引用其自身,從而建立遞迴 cte。遞迴 cte 是乙個重複執行初始 cte 以返回資料子集直到獲取完整結果集的公用表表示式。當某個查詢引用遞迴 cte 時,它即被稱為遞迴查詢。遞迴查詢通常用於返回分層資料,例如 顯示某個組織圖中的雇員或物料清單方案...

公用表表示式 CTE 遞迴

指定臨時命名的結果集,這些結果集稱為公用表表示式 cte 公用表表示式可以包括對自身的引用。這種表示式稱為遞迴公用表表示式。對於遞迴公用表示式來說,實現原理也是相同的,同樣需要在語句中定義兩部分 在sql這兩部分通過union all連線結果集進行返回 with cte as select id,p...

公用表表示式

公用表表示式 common table expressions 假設我們有乙個100w條資料的訂單表,需要分頁查詢。declare rownumber asint,pagenumber asint set rownumber 5 set pagenumber 2 with orderedorders...