这是我的桌子:
id |parent_id |name
-------|-----------|--------------------
1| 0|Kevin Gravey
2| 0|John Chen
3| 1|Clark Garvey
4| 2|Halsey Chen
5| 3|Carl Garvey
6| 4|Betty Chen
7| 5|Rick Garvey
8| 6|Donna Chen
10| 5|Chris Garvey
11| 6|Harrington Chen
但是我需要使表看起来像这样:
id |parent_id |name
-------|-----------|--------------------
1| 0|Kevin Gravey
2| 0|John Chen
3| 0|Kevin Gravey
4| 0|John Chen
5| 0|Kevin Gravey
6| 0|John Chen
7| 0|Kevin Gravey
8| 0|John Chen
10| 0|Kevin Gravey
11| 0|John Chen
我用了一个查询从该但是,相反我越来越:
id |parent_id |name
-------|-----------|--------------------
1| 0|
2| 0|
3| 1|Kevin Gravey
4| 2|John Chen
5| 3|Clark Garvey
6| 4|Halsey Chen
7| 5|Carl Garvey
8| 6|Betty Chen
10| 5|Rick Garvey
11| 6|Donna Chen
有人知道查询是什么吗?我正在使用postgre。
您的方法正确。考虑使用此:
with recursive tree as (
select id,
parent_id,
array[id] as all_parents,
name as parent_name
from hierarchy
where parent_id = 0
union all
select c.id,
p.parent_id,
p.all_parents,
p.parent_name
from hierarchy c
join tree p
on c.parent_id = p.id
and c.id <> all (p.all_parents)
)
select id, parent_id, parent_name
from tree;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句