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

再帰的なものを含む複数の 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 ...
ログイン後にコピー

このクエリには、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート