CTE的介紹與使用

2021-09-24 09:35:35 字數 1657 閱讀 7422

1、什麼是cte

cte可以被認為是在單個select、insert 、update、delete或create view語句的執行範圍內定義的臨時結果集。cte類似於派生表,因為它不作為物件儲存,並且僅在查詢期間持續。與派生表不同,cte可以自引用,並且可以在同一查詢中多次使用。

2、cte作用:

使用cte具有提高可讀性和易於維護複雜查詢的優點。

查詢可以分為單獨的簡單邏輯構建塊。

然後,可以使用這些簡單的塊來構建更複雜的臨時cte,直到生成最終結果集。

cte可以在函式、儲存過程、觸發器、檢視中定義使用。

3、cte的結構

cte 由cte的表示式名稱,可選列列表和定義cte的查詢組成。定義cte後,可以在select,insert,update,delete語句中像表或檢視一樣引用它。cte可以在 create view語句中用作其定義select語句的一部分。

cte的基本語法結構是:

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

as( cte_query_definition )

--只有在查詢定義中提供了所有結果列的不同名稱時,列名列表才是可選的。

--在語句中使用cte:

select from expression_name;

4、舉個例子

下面的例子展示了cte的組成:表示式名稱,可選列列表,查詢語句。

-- 定義cte表示式名稱和列 .

with sales_cte (salespersonid, salesorderid, salesyear)

as--定義查詢語句.

(    select salespersonid, salesorderid, year(orderdate) as salesyear

from sales.salesorderheader

where salespersonid is not null

)-- 對外使用cte進行查詢.

select salespersonid, count(salesorderid) as totalsales, salesyear

from sales_cte

group by salesyear, salespersonid

order by salespersonid, salesyear;

部分結果展示:

salespersonid totalsales  salesyear

------------- ----------- -----------

274           4           2001

274           20          2002

274           14          2003

274           10          2004

275           56          2001

275           139         2002

275           169         2003

Sql Server 使用CTE實現遞迴查詢

遞迴cte是sql server 2005中重要的增強之一。一般我們在處理樹,圖和層次結構的問題時需要用到遞迴查詢。cte的語法如下 1with cte as2 3select empid,reportto,fname from employ where empid 1 4union all5 se...

STL set的介紹與使用

c stl 之所以得到廣泛的讚譽,也被很多人使用,不只是提供了像vector,string,list等方便的容器,更重要的是stl封裝了許多複雜的資料結構演算法和大量常用資料結構操作。vector封裝陣列,list封裝了鍊錶,map和set封裝了二叉樹等,在封裝這些資料結構的時候,stl按照程式設計...

Condition的介紹與使用

condition是lock對應synchronize的wait,notify等執行緒互相作用時而使用的等待通知機制,condition有著比synchronize更加靈活的用法,實現的功能也更多,通俗的可以說是synchronize只用乙個condition,而lock可以使用多個conditio...