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

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

Mary-Kate Olsen
發布: 2024-12-31 21:44:14
原創
257 人瀏覽過

How Can I Combine Multiple CTEs, Including Recursive Ones, in a Single SQL Query?

單一SQL 查詢中的多個CTE

在SQL 中,可以在單一查詢中組合多個CTE(公用表表達式) 。為此,您需要在查詢開頭使用關鍵字 WITH 一次。

範例:

假設您要組合一種遞迴 CTE 和兩種非遞迴 CTE。您可以使用以下語法來執行此操作:

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

在此範例中:

  • cte1 是遞歸 CTE。
  • cte2 是一個非遞歸CTE。
  • cte3 是非遞歸 CTE。

注意: 當 RECURSIVE 時,CTE 的順序並不重要。使用關鍵字。

遞歸CTE:

遞歸 CTE 可以在其定義中引用自身。這允許您建立分層或樹狀結構。在上面的範例中,cte2 是遞歸 CTE,因為它在 UNION ALL 子句中引用自身。

非遞歸 CTE:

非- 遞歸 CTE 只是定義可以稍後在查詢中引用的臨時表。在上面的範例中,cte1cte3 是非遞歸 CTE。

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

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