簡介html
對於SELECT查詢語句來講,一般狀況下,爲了使T-SQL代碼更加簡潔和可讀,在一個查詢中引用另外的結果集都是經過視圖而不是子查詢來進行分解的。可是,視圖是做爲系統對象存在數據庫中,那對於結果集僅僅須要在存儲過程或是用戶自定義函數中使用一次的時候,使用視圖就顯得有些奢侈了。數據庫
公用表表達式(Common Table Expression)是SQL SERVER 2005版本以後引入的一個特性。CTE能夠看做是一個臨時的結果集,能夠在接下來的一個SELECT,INSERT,UPDATE,DELETE,MERGE語句中被屢次引用。使用公用表達式能夠讓語句更加清晰簡練。函數
除此以外,根據微軟對CTE好處的描述,能夠歸結爲四點:spa
定義.net
公用表表達式(CTE),是一個在查詢中定義的臨時命名結果集將在from子句中使用它。每一個CTE僅被定義一次(但在其做用域內能夠被引用任意次),而且在該查詢生存期間將一直生存。能夠使用CTE來執行遞歸操做。code
包含三部分:htm
建立的語法是:對象
with <name of you cte>(<column names>) as( <actual query> ) select * from <name of your cte>
編輯推薦blog
SQL Server2005雜談(1):使用公用表表達式(CTE)簡化嵌套SQL遞歸