在SQL中获取分层数据中的所有子节点

时间:2018-04-17 01:12:32

标签: sql postgresql recursion common-table-expression

我有以下sql表:

id   parent_id
1    null
2    1
3    4
4    8
5    1
6    2
7    6
8    null

如何获取某个特定节点的所有子节点? 例如,id = 1:

1 2 5 6 7

id = 8

8 4 2

1 个答案:

答案 0 :(得分:0)

我已经在另一个博客中发现了,希望它会帮助其他人:

with RECURSIVE cte(id,parent_id) as (
  select
    id,
    parent_id
  from forum
  where id = 2
  UNION ALL
  select
    forum.id,
    forum.parent_id
  from forum
    inner join cte on forum.parent_id = cte.id
)
select * from cte