oracle 递归查询实现树形结构
1.情景展示
将数据按照上下级关系,逐级展开,也就是我们常说的树形结构。
逐级展示,直到最后一级(注意:所有包含子级的都会被展开,上图只是示例,知道是这个意思就行了)。
2.具体分析
只要表里,存的字段有父级ID,就能使用CONNECT BY PRIOR来实现。
3.解决方案
语法:
SELECT T.*, LEVEL, CONNECT_BY_ISLEAF
FROM TABLE_NAME T
START WITH T.PARENT_ID = '最上级ID'
CONNECT BY PRIOR T.ID = T.PARENT_ID
套用:
SELECT T.*, LEVEL, CONNECT_BY_ISLEAF
FROM META_THEME T
START WITH T.PARENTTHEMEID = '0'
CONNECT BY PRIOR T.THEMEID = T.PARENTTHEMEID
4.扩展实现
如果我们只想查询某个节点下所有的子节点和子孙节点,如何实现?
语法:
SELECT T.*
FROM TABLE_NAME T
START WITH T.ID = 'ID'
CONNECT BY PRIOR T.ID = T.PARENT_ID
ORDER BY T.ID
套用:
SELECT T.THEMENAME
FROM META_THEME T
START WITH T.THEMEID = '123'
CONNECT BY PRIOR T.THEMEID = T.PARENTTHEMEID
ORDER BY T.THEMEID
写在最后
哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!
相关推荐:
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/16409257.html