1.情景展示

将数据按照上下级关系,逐级展开,也就是我们常说的树形结构。

oracle 递归查询实现树形结构_ORACLE

逐级展示,直到最后一级(注意:所有包含子级的都会被展开,上图只是示例,知道是这个意思就行了)。

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

oracle 递归查询实现树形结构_解决方案_02

 

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!


作者:Marydon