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; の直前部分までを
示すことになるのではないかと思ったからです。
はじめまして。質問させていただきます。
今回「2 回目以降再帰的に実行される処理」として記載されている部分で
tが用いられていますが(FROM comments JOIN tのところです)、なぜ最初の階層 (
n = 1) で実行された処理がtとなるのかがよくわかりませんでした。
最初の
WITH RECURSIVE t AS()の部分は、丸括弧内のすべてにかかっているように見えるので、
tはこの場合SELECT * FROM t;の直前部分までを示すことになるのではないかと思ったからです。
よろしければ、回答をいただければ幸いです。
よろしくお願いいたします。