如果有一个表为2列,ParentId和ChildId,并且可能有多个级别,如下表所示
ParentId ChildId
-1 1
-1 2
1 3
3 4
4 5
如果孩子没有父母,则用-1表示。
现在,如果我需要最高级别的父级为5,那么其父级为4,父级为3,父级为1.因此1是答案,因为其父级= -1。
我在Sql server CTE and recursion example进行了讨论,似乎很复杂。
从谷歌搜索我知道我们可以使用WITH AS和UNION来实现这一点,任何人都可以对可以得到这个结果的通用sql有所了解吗?
感谢
Nohsib
答案 0 :(得分:4)
select connect_by_root(ChildId) as id
from t
where ChildId = 5
start with ParentId = -1
connect by ParentId = prior ChildId