可以認為是在單個 select、insert、update、delete 或 create view 語句的執行範圍內定義的臨時結果集。
cte 與派生表類似,具體表現在不儲存為物件,並且只在查詢期間有效。
與派生表的不同之處在於,cte 可自引用,還可在同一查詢中引用多次。
cte可用於:
1.建立遞迴查詢(我個人認為cte最好用的地方)
2.在同一語句中多次引用生成的表
cte優點:
使用 cte 可以獲得提高可讀性和輕鬆維護複雜查詢的優點。
查詢可以分為單獨塊、簡單塊、邏輯生成塊。
之後,這些簡單塊可用於生成更複雜的臨時 cte,直到生成最終結果集。
cte可使用的範圍:
可以在使用者定義的例程(如函式、儲存過程、觸發器或檢視)中定義 cte。
英文全稱(common table expression)
下面看乙個簡單的cte例題:
把test表中salary最大的id記錄儲存在test_cte中,再呼叫
with test_cte(id,salary)
as
(
select
id ,max(salary)
from test
group by id
)
select * from test_cte
由上面例題可以看出:
cte 由表示 cte 的表示式名稱、可選列列表和定義 cet 的查詢組成。
定義 cte 後,可以在 select、insert、update 或 delete 語句中對其進行引用,
就像引用表或檢視一樣。
簡單的說cte可以替代臨時表和表變數的功能。
公用表表示式CTE
公用表表示式cte表面上和派生表非常相似,看起來只是語義上的區別。但和派生表比較起來,cte具有幾個優勢 第一,如果須要在乙個cte中引用另乙個cte,不需要像派生表那樣巢狀,相反,只要簡單地在同乙個with子句中定義多個cte,並用逗號把它們分隔開。每個cte可以引用在它前面定義的所有cte。而外...
公用表表示式 CTE
在編寫t sql 時,往往需要臨時儲存某些結果集。前面我們已經廣泛使用和介紹了兩種臨時儲存結果集的方法 臨時表和表變數。除此之外,還可以使用公用表表示式的方法。公用表表示式 common table expression 是sql server2005版本的引入的乙個特性。cte可以看組是乙個臨時的...
公用表表示式 CTE
在編寫t sql 時,往往需要臨時儲存某些結果集。前面我們已經廣泛使用和介紹了兩種臨時儲存結果集的方法 臨時表和表變數。除此之外,還可以使用公用表表示式的方法。公用表表示式 common table expression 是sql server2005版本的引入的乙個特性。cte可以看組是乙個臨時的...