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

 

 

写在最后

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

 相关推荐:

posted @ 2022-06-24 16:04  Marydon  阅读(516)  评论(0编辑  收藏  举报