在sql中查找父级的所有子级,包括子级的子级

  • 本文关键字:包括 sql 查找 sql
  • 更新时间 :
  • 英文 :


我想找到一个这样的表:

父级 子级
A B
A C
A D
A E
B C
B D

您可以尝试以下自联接查询:

select D.node Parent, T.node Child
from table_name T join table_name D
on T.level > D.level
order by D.node, T.node

如果您想从具有相同级别的节点中只选择一个节点,您可以使用ROW_NUMBER()功能,如下所示:

select D.node Parent, T.node Child
from table_name T join
(
select *, 
row_number() over (partition by level order by node) rn 
from table_name
) D
on T.level > D.level
where D.rn = 1
order by D.node, T.node

查看演示。

最新更新