首頁 >資料庫 >mysql教程 >多個 CTE 可以合併在一個 SQL 查詢中嗎?

多個 CTE 可以合併在一個 SQL 查詢中嗎?

Patricia Arquette
Patricia Arquette原創
2025-01-01 10:49:11200瀏覽

Can Multiple CTEs Be Combined in a Single SQL Query?

使用多個 CTE 進行查詢

傳統實踐通常需要組合多個公共表表達式 (CTE) 來實現複雜的資料擷取任務。然而,對於在單一 SQL 查詢中組合多個 CTE 的可行性仍存在疑問。

支援多個 CTE

事實上,在單一 SQL 查詢中組合多個 CTE 是完全可行的。此語法要求僅使用一次WITH 關鍵字,位於查詢的開頭。即使在處理遞歸和非遞歸 CTE 的混合時,RECURSIVE 關鍵字仍然應該只在頂部包含一次。

例如:

WITH RECURSIVE
  cte1 AS (...)         -- non-recursive
, cte2 AS (SELECT ...
           UNION ALL
           SELECT ...)  -- recursive
, cte3 AS (...)
SELECT ... FROM cte3 WHERE ...

值得注意的是,順序當存在 RECURSIVE 關鍵字時,CTE 子句的數量變得無關緊要。根據 SQL 手冊,它允許 CTE 查詢引用其他 CTE,無論它們在 WITH 子句中的順序如何。

此外,最終 SELECT 語句中未引用且不具有非遞歸 CTE任何附帶效果都不會被執行。

以上是多個 CTE 可以合併在一個 SQL 查詢中嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn