Sql學習第三天——SQL 關于CTE(公用表達式)的遞歸
導讀:1建站知識公用表表達式(CTE)具有一個重要的優點,那就是能夠引用其自身,從而創建遞歸 CTE接下來詳細介紹下:CTE 的基本語法結網站seo優化公司網站建設。
關于使用CTE(公用表表達式)的遞歸查詢----SQL Server 2005及以上版本
公用表表達式 (CTE) 具有一個重要的優點,那就是能夠引用其自身,從而創建遞歸 CTE。遞歸 CTE 是一個重復執行初始 CTE 以返回數據子集直到獲取完整結果集的公用表表達式。
當網站seo優化診斷工具某個查詢引用遞歸 CTE 時,它即被稱為遞歸查詢。遞歸查詢通常用于返回分層數據,例如:顯示某個組織圖中的雇員或物料清單方案(其中父級產品有一個或多個組件,而那些組件可能還有子組件,或者是其他父級產品的組件)中的數據。
遞歸 CTE 可以極大地簡化在 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 語句中運行遞歸查詢所需的代碼。在 SQL Server 的早期版本中,遞歸查詢通常需要使用臨時表、游標和邏輯來控制遞歸步驟流。
CTE 的基本語法結構如下:
復制代碼 代碼如下:
WITH expression_name [ ( column_name [,...n] ) ] AS ( CTE_query_definition ) --只有在查詢定義中為所有結果列都提供了不同的名稱時,列名稱列表才是可選的。 --運行 CTE 的語句為: SELECT <column_list> FROM expression_name;
在使用CTE時應注意如下幾點:CTE后面必須直接跟使用CTE的SQL語句(如select、insert、update等),否則,CTE將失效。如下面的SQL語句將無法正常使用CTE:
復制代碼 代碼如下:
with cr as ( select * from 表名 where 條件 ) --select * from person.CountryRegion --如果加上這句話后面用到cr將報錯 select * from cr
2. CTE后面也可以跟其他的CTE,但只能使用一個with,多個CTE中間用逗號(,)分隔,如下面的SQL語句所示:復制代碼 代碼如下:
with cte1 as ( select * from table1 where name like '測試%' ), cte2 as ( select * from table2 where id > 20 ), cte3 as ( select * from table3 where price < 100 ) select a.* from cte1 a, cte2 b, cte3 c where a.id = b.id and a.id = c.id
3. 如果CTE的表達式名稱與某個數據表或視圖重名,則緊跟在該CTE后面的SQL語句使用的仍然是CTE,當然,后面的SQL語句使用的就是數據表或視圖。4. CTE 可以引用自身,也可以引用高端網站建設在同一 WITH 子句中預先定義的 CTE。
5. 不能在 CTE_query_definition 中使用以下子句:
復制代碼 代碼如下:
COMPUTE 或 COMPUTE BY ORDER BY(除非指定了 TOP 子句) INTO 帶有查詢提示的 OPTION 子句 FOR XML FOR BROWSE
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-24 ,文章Sql學習第三天——SQL 關于CTE(公用表達式)的遞歸主要講述遞歸,表達式,SQL網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_6313.html