ホームページ >データベース >mysql チュートリアル >再帰的なものを含む複数の CTE を単一の SQL クエリに結合できますか?

再帰的なものを含む複数の CTE を単一の SQL クエリに結合できますか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-05 05:19:39471ブラウズ

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 ...

このクエリには、1 つの再帰 CTE と 2 つの非再帰 CTE が組み込まれています。

解決策:

複数の CTE を 1 つに接続するにはクエリ:

  • 最初に WITH キーワード once を使用します。
  • CTE が再帰的である場合は、RECURSIVE キーワード once を追加します。すべての CTE がそうではないとしても、最初はrecursive。

更新されたクエリ:

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

キーポイント:

  • RECURSIVE キーワードCTE に次のことを許可します。自己参照。
  • RECURSIVE では、WITH 句の順序は重要ではなくなります。
  • 外側の SELECT で参照されない CTE は実行されない可能性があります。

以上が再帰的なものを含む複数の CTE を単一の SQL クエリに結合できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。