首頁 > 資料庫 > mysql教程 > 多個 CTE(包括遞歸 CTE)能否組合在單一 SQL 查詢中?

多個 CTE(包括遞歸 CTE)能否組合在單一 SQL 查詢中?

Susan Sarandon
發布: 2025-01-05 05:19:39
原創
434 人瀏覽過

Can Multiple CTEs, Including Recursive Ones, Be Combined in a Single SQL Query?

在單一 SQL 查詢中連接多個 CTE

在單一查詢中組合多個公共表表達式 (CTE) 是否可行?目標是獲得類似以下的結果:

WITH cte1 AS (
...
),
WITH RECURSIVE cte2 AS (
...
),
WITH cte3 AS (
...
)
SELECT ... FROM cte3 WHERE ...
登入後複製

此查詢包含一個遞歸 CTE 和兩個非遞歸 CTE。

解決方案:

在單一CTE 中連接多個CTE查詢:

  • 在開頭使用WITHM
  • 如果任何CTE是遞歸的,請在以下位置新增RECURSIVE關鍵字
  • once開始,即使不是所有的 CTE 都是遞迴。

更新的查詢:

WITH RECURSIVE
  cte1 AS (...)         -- can still be non-recursive
, cte2 AS (SELECT ...
           UNION ALL
           SELECT ...)  -- recursive term
, cte3 AS (...)
SELECT ... FROM cte3 WHERE ...
登入後複製

重點:

    重點:
  • 自引用。
  • 使用 RECURSIVE,WITH 子句的順序變得無關緊要。
外部 SELECT 中未引用的 CTE 可能不會執行。

以上是多個 CTE(包括遞歸 CTE)能否組合在單一 SQL 查詢中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板