ルートフォーラムポストのすべての子供と孫を取得する次のSQLがあります。
with recursive all_posts (id, parentid, root_id) as
(
select t1.id,
t1.parent_forum_post_id as parentid,
t1.id as root_id
from forumposts t1
union all
select c1.id,
c1.parent_forum_post_id as parentid,
p.root_id
from forumposts
c1
join all_posts p on p.id = c1.parent_forum_post_id
)
select fp.id
from forumposts fp inner join all_posts ap
on fp.id=ap.id
where
root_id=1349
group by fp.id
選択したレコードを削除したいのですが。fp.id =(上記のコードから最後に選択)であるforumposts fpから削除するようなものですが、それは機能しません(「DELETE」またはその近くで構文エラーが発生します)。再帰を使用するのはこれが初めてで、何かが足りないに違いありません。どんな助けでも大歓迎です。