我正试图想出一个SQL查询来读取递归数据,如下所示:
ParentId ChildId
1 2
2 3
3 4
4 5
4 6
8 9
如果提供了ParentId
,那么查询应该以递归方式返回所有ChildId
。
示例:parentId =1
、result = {2, 3, 4, 5, 6}
我发现connect_by_root
和connect by prior
可能是我应该使用的。但我没能把它做好。
数据库:Oracle和Db2
这应该可以做到:
SELECT ChildId, ParentId, LEVEL
FROM myTable
CONNECT BY PRIOR ChildId = ParentId;
这样做了:
SELECT childid
FROM btab
START WITH parentId = 1
CONNECT BY PRIOR childId = parentId;
感谢#Bulat&AngocA,用于指针