メインコンテンツまでスキップ
バージョン: 4.x

Common Table Expression

説明

Common Table Expression (CTE) は、SQL文のスコープ内で複数回参照できる一時的な結果セットを定義します。CTEは主にSELECT文で使用されます。

CTEを指定するには、WITH句を1つ以上のカンマ区切りの句と共に使用します。各句は、結果セットを生成するサブクエリを提供し、そのサブクエリに名前を関連付けます。

DorisはネストされたCTEをサポートします。WITH句を含む文内で、各CTE名を参照して対応するCTE結果セットにアクセスできます。CTE名は他のCTEで参照でき、他のCTEに基づいてCTEを定義することができます。

Dorisは再帰CTEをサポートしていません。詳細については、recursive CTEに関するMySQLマニュアルを参照してください。

シンプルなCTE

以下の例では、WITH句内でcte1とcte2という名前のCTEを定義し、WITH句の下のトップレベルのSELECT内でそれらを参照します:

WITH
cte1 AS (SELECT a, b FROM table1),
cte2 AS (SELECT c, d FROM table2)
SELECT b, d FROM cte1 JOIN cte2
WHERE cte1.a = cte2.c;

ネストされたCTE

WITH
cte1 AS (SELECT a, b FROM table1),
cte2 AS (SELECT c, d FROM cte1)
SELECT b, d FROM cte1 JOIN cte2
WHERE cte1.a = cte2.c;

再帰CTE(サポートなし)

WITH r_cte AS (
SELECT 1 AS user_id, 2 as manager_id
UNION ALL
SELECT user_id, manager_id FROM r_cte INNER JOIN (SELECT 1 AS user_id, 2 as manager_id) t ON r_cte.manager_id = t.user_id
)
SELECT * FROM r_cte