t の扱いについて教えてください

順を追って説明していきます。
2023年11月14日
ユーザー

はじめまして。質問させていただきます。

WITH RECURSIVE t AS (
  -- n = 1
  SELECT * FROM comments WHERE parent_id = 2
  UNION ALL
  -- n >= 2
  SELECT
    comments.*
  FROM
    comments JOIN t
  ON
    comments.parent_id = t.id
)
SELECT * FROM t;

今回「2 回目以降再帰的に実行される処理」として記載されている部分で
t が用いられていますが(FROM comments JOIN t のところです)、
なぜ最初の階層 (n = 1) で実行された処理が t となるのかが
よくわかりませんでした。

最初の WITH RECURSIVE t AS() の部分は、
丸括弧内のすべてにかかっているように見えるので、
t はこの場合 SELECT * FROM t; の直前部分までを
示すことになるのではないかと思ったからです。

よろしければ、回答をいただければ幸いです。
よろしくお願いいたします。

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?