我正在尝试找到多行数据的父级。让我们说我有三条记录,第一条记录是父记录(记录#123)。作为对第一个的回复的第二个记录(记录#945)具有#123的父亲。但是,第三条记录(记录#567),它是对第二条消息的回复,其父级为945.我希望父级显示123而不是945.(最后我想回答一般有多少线程消息)参见下面的示例图表。任何有关如何通过postgresql执行此操作的帮助将非常感激。
header_id id parent FIELD_NEEDED
87654311 123 null 123
87654311 945 123 123
87654311 567 945 123
87654311 691 123 123
87654311 876 null 876
87654311 721 null 721
87654311 108 721 721
87654311 236 108 721
答案 0 :(得分:0)
使用递归查询:
WITH RECURSIVE q(header_id, id ,parent,field_needed, root, pp)
as (
select header_id,id ,parent,field_needed,id as root, parent pp
from table1 t
union all
select q.header_id,q.id ,q.parent,q.field_needed,t.id, t.parent
from q
join table1 t
on t.id = q.pp
)
select header_id, id ,parent,field_needed, root
from q
where pp is null