Adjacency List 表中,给定节点的 id,如何找到它关联的 根节点

笔记:

该表包含多棵树,因此我不能简单地搜索空 parentId。

更多信息:

这是我目前所拥有的,有什么问题或改进吗?

with tree as
(
    select
        t.*

    from table1 t
    where t.id = @id

    union all

    select
        t2.*

    from tree
    join table1 t2 on tree.parentId = t2.id
)

select *
from tree
where parentId is null

最佳答案

我不认为提供的任何解决方案比我自己的更好,所以我最终选择了这个:

with tree as
(
    select
        t.*

    from table1 t
    where t.id = @id

    union all

    select
        t2.*

    from tree
    join table1 t2 on tree.parentId = t2.id
)

select *
from tree
where parentId is null

关于sql - 在邻接表中查找后代的根节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11646409/

10-13 03:20