當前位置:首頁 » 編程語言 » sql中with

sql中with

發布時間: 2025-02-24 11:49:56

『壹』 sql:with 查詢

WITH 提供了一種方式來書寫在一個大型查詢中使用的輔助語句。
這些語句通常被稱為公共表表達式 或 CTE ,它們可以被看成是僅在單個 SQL 語句( SELECT 、 INSERT 、 UPDATE 或 DELETE )的執行范圍內存在中存在的臨時表。

在 WITH 子句中的每一個輔助語句可以是一個 SELECT 、 INSERT 、 UPDATE 或 DELETE ,並且 WITH 子句本身也可以被附加到一個主語句,主語句也可以是 SELECT 、 INSERT 、 UPDATE 或 DELETE 。

在合並兩張表之前先進行篩選,盡可能刪減掉不需要的行,只保留需要的行,這樣編寫出的 SQL 更高效。

以下的 SQL 是非常低效的,因為它先合並兩個表,之後才對 「2017 年 1 月 9 日」 之後的時間進行篩選:

正確的表達方式是在合並表之前使用CTEs進行篩選,如下:

比如 table_a 和 table_b 各有 1000 條數據, day >= '2017-09-01' 的數據為 10 條。

正常人都知道,100 條數據處理比 100w 條數據處理塊,所以【先過濾再連表】比【先連表再過濾】效率更高。

『貳』 SQL 中with的用法

SQL 中with的用法如下:

CTE 之後必須跟隨引用部分或全部 CTE 列的 SELECT、INSERT、UPDATE 或 DELETE 語句。也可以在 CREATE VIEW 語句中將 CTE 指定為視圖中 SELECT 定義語句的一部分。

可以在非遞歸 CTE 中定義多個 CTE 查詢定義。定義必須與以下集合運算符之一結合使用:UNION ALL、UNION、INTERSECT 或 EXCEPT。

CTE 可以引用自身,也可以引用在同一WITH子句中預先定義的 CTE。不允許前向引用。

不允許在一個 CTE 中指定多個WITH子句。例如,如果 CTE_query_definition 包含一個子查詢,則該子查詢不能包括定義另一個 CTE 的嵌套的WITH子句。

不能在 CTE_query_definition 中使用以下子句:

COMPUTE 或 COMPUTE BY

ORDER BY(除非指定了 TOP 子句)

INTO

帶有查詢提示的 OPTION 子句

FOR XML

FOR BROWSE

(2)sql中with擴展閱讀

定義和使用遞歸 CTE 指南

下列指南適用於定義遞歸 CTE 的情況:

遞歸 CTE 定義至少必須包含兩個 CTE 查詢定義,一個定位點成員和一個遞歸成員。可以定義多個定位點成員和遞歸成員;但必須將所有定位點成員查詢定義置於第一個遞歸成員定義之前。所有 CTE 查詢定義都是定位點成員,但它們引用 CTE 本身時除外。

定位點成員必須與以下集合運算符之一結合使用:UNION ALL、UNION、INTERSECT 或 EXCEPT。在最後一個定位點成員和第一個遞歸成員之間,以及組合多個遞歸成員時,只能使用 UNION ALL 集合運算符。

定位點成員和遞歸成員中的列數必須一致。

遞歸成員中列的數據類型必須與定位點成員中相應列的數據類型一致。

遞歸成員的 FROM 子句只能引用一次 CTE expression_name。

在遞歸成員的 CTE_query_definition 中不允許出現下列項:

『叄』 下面SQL 中的;with 是什麼意思,為什麼一定要加上':with'呢,起什麼作用呢。

SQL 語句裡面的 with
是使用在 CTE 上面的

CTE(Common Table Expression) ,即公用表表達式,可以認為是在單個 SELECT、INSERT、UPDATE、DELETE 或 CREATE ⅥEW 語句的執行范圍內定義的臨時結果集。CTE 與派生表類似,具體表現在不存儲為對象,並且只在查詢期間有效。與派生表的不同之處在於,CTE 可自引用,還可在同一查詢中引用多次。

『肆』 SQL SERVER裡面的with語句有什麼作用用過的師兄請幫忙

with 是公用表表達式(CTE),它是一個在查詢中定義的臨時命名結果集將在from子句中使用它。每個CTE僅被定義一次(但在其作用域內可以被引用任意次),並且在該查詢生存期間將一直生存。可以使用CTE來執行遞歸操作。

with 自己起的名字 as
(
select * from 表名
)
select * from 自己起的名字

熱點內容
falogin出廠密碼是多少 發布:2025-02-24 15:10:26 瀏覽:229
網易我的世界開伺服器圈地 發布:2025-02-24 15:07:38 瀏覽:280
鏈表學生管理系統c語言 發布:2025-02-24 14:46:10 瀏覽:337
群舞編創腳本怎麼寫 發布:2025-02-24 14:39:11 瀏覽:778
空調壓縮機壞了的表現 發布:2025-02-24 14:38:25 瀏覽:767
怎樣使用阿里雲伺服器 發布:2025-02-24 14:35:42 瀏覽:222
紅帽56關閉ftp服務 發布:2025-02-24 14:35:09 瀏覽:509
html5存儲文件 發布:2025-02-24 14:25:37 瀏覽:96
手機相機演算法優化 發布:2025-02-24 14:24:23 瀏覽:210
button數組android 發布:2025-02-24 14:24:21 瀏覽:202