在單一SQL 查詢中組合多個CTE
可以透過使用WITH 關鍵字後接在單一查詢中組合多個CTE CTE 定義。但是,如果任何 CTE 是遞歸的 (rCTE),則也必須在語句開頭使用 RECURSIVE 關鍵字。
例如:
WITH RECURSIVE cte1 AS ( ... ), cte2 AS ( SELECT ... UNION ALL SELECT ... ), cte3 AS ( ... ) SELECT ... FROM cte3 WHERE ...
在此範例中,cte1是一個非遞歸 CTE,cte2 是一個 rCTE,cte3 是另一個非遞歸CTE。
使用 RECURSIVE 關鍵字時,WITH 子句的順序無關緊要。這意味著您可以引用清單中後面的 CTE。
在某些情況下,您可能想要使用非遞歸 CTE 來簡化查詢。例如,您可以使用非遞歸 CTE 建立一個臨時表,然後可以在其他 CTE 中使用該臨時表。
透過在單一查詢中使用多個 CTE,您可以提高程式碼的效能和可讀性.
以上是如何在單一 SQL 查詢中組合多個 CTE(包括遞歸 CTE)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!