在Sql Server 2005使用公用表表达式CTE简化复杂的查询语句
公用表表達式CTE是Sql Server 2005引入的一種新的表表達式。CTE在許多方面都類似于派生表。邏輯上CTE是一個臨時結果集,它僅僅存在于它發生的語句中。您可以在SELECT、INSERT、DELETE、UPDATE或CTEATE VIEW語句中建立一個CTE。
CTE的優點
與派生表不同,CTE能夠引用自己本身。如果您不必存儲視圖,您可以用一個CTE來代替它。在一個語句中,您還可以多次引用CTE。應用CTE,您可以通過一個派生欄對結果進行分組。CTE可以將查詢區域分割成可讀的“塊”,然后用這些塊建立一個復雜的查詢。
創建CTE
WITH CTE_name[ (column_name [,...n] ) ]
AS
( CTE_query_specification )
Outer_query_using_Cte;
注意CTE和外部的查詢語句之間不能使用分號;
例如:
?
代碼 WITH?cte_EmployeeAS
(
SELECTe.EmployeeID,?c.FirstName,?c.MiddleName,?c.LastName,
e.Title?AS?JobTitle,?c.Phone,?e.ManagerID
FROMHumanResources.EmployeeAS?e?
INNER?JOIN?Person.ContactAS?c?ON?c.ContactID?=?e.ContactID
)
SELECT?*?FROM?cte_Employee;
?
?
多CTE
CTE不能被直接嵌套。但是可以在同一個WITH語句中定于多個CTE,每個CTE可以應用前面的CTE。外部查詢可以訪問到所有的CTE。利用這一功能可以簡化復雜的嵌套查詢。
?
WITH?cte1?as(
????....
)
cte2?as
(
????SELECT?*?FROM?cte1
)
SELECT?*?FROM?cte2
?
?
多引用
即你可以再外部查詢中多次引用同一個CTE名稱。不必像派生表那樣重復定義相同的查詢。
轉載于:https://www.cnblogs.com/hyl8218/archive/2009/12/23/1630448.html
總結
以上是生活随笔為你收集整理的在Sql Server 2005使用公用表表达式CTE简化复杂的查询语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JSONObject.fromObjec
- 下一篇: C# 之 HttpResponse 类