ホームページ >データベース >mysql チュートリアル >複数の CTE を 1 つの SQL クエリに結合できますか?

複数の CTE を 1 つの SQL クエリに結合できますか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-01 10:49:11199ブラウズ

Can Multiple CTEs Be Combined in a Single SQL Query?

複数の CTE を使用したクエリ

従来の手法では、複雑なデータ取得タスクを実行するために複数の共通テーブル式 (CTE) を組み合わせる必要がよくあります。ただし、単一の SQL クエリ内で複数の CTE を結合する実現可能性については疑問が残ります。

複数の CTE のサポート

実際、単一の SQL クエリ内で複数の CTE を結合することは完全に可能です。この構文では、WITH キーワードをクエリの先頭に 1 回だけ使用する必要があります。再帰的 CTE と非再帰的 CTE の組み合わせを扱う場合でも、RECURSIVE キーワードは先頭に 1 回だけ含める必要があります。

例:

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

RECURSIVE キーワードが存在する場合、CTE 句の数は無関係になります。 SQL マニュアルによると、CTE クエリは、WITH 句内の順序に関係なく、他の CTE を参照できます。

さらに、最後の SELECT ステートメントで参照されず、付随的な効果は実行されません。

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

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