傳統實踐通常需要組合多個公共表表達式 (CTE) 來實現複雜的資料擷取任務。然而,對於在單一 SQL 查詢中組合多個 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中文網其他相關文章!