キーワードWITH
を使用する 1回 頂点で。 Common Table Expressions(CTE)のいずれかが再帰的(rCTE)である場合は、キーワードRECURSIVE
を追加する必要があります。 上部に1回 また、すべてのCTEが再帰的でなくても:
WITH RECURSIVE
cte1 AS (...) -- can still be non-recursive
, cte2 AS (SELECT ...
UNION ALL
SELECT ...) -- recursive term
, cte3 AS (...)
SELECT ... FROM cte3 WHERE ...
マニュアル:
RECURSIVE
の場合 指定されている場合、許可SELECT
名前で自分自身を参照するサブクエリ。
大胆な強調鉱山。そして、さらに洞察力があります:
RECURSIVE
のもう1つの効果 そのWITH
クエリを並べ替える必要はありません :クエリは、リストの後半にある別のクエリを参照できます。 (ただし、循環参照または相互再帰は実装されていません。)RECURSIVE
なし 、WITH
クエリは兄弟WITH
のみを参照できますWITH
の前のクエリ リスト。
大胆な強調は再び私のものです。 WITH
の順序を意味します 句は意味がありません RECURSIVE
の場合 キーワードが使用されました。
ところで、cte1
以降 およびcte2
この例では、外側のSELECT
では参照されていません プレーンなSELECT
コマンド自体(付随的な影響なし)、実行されることはありません(cte3
で参照されている場合を除く) 。