ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

oracle递归 遍历子节点 查询父节点

2022-06-17 14:03:38  阅读:183  来源: 互联网

标签:遍历 group parent prior id start oracle 节点


一、适用情况:

适用树状结构数据,例如包含id,parent_id字段的数据表 ,表中数据可以通过某些字段找到其中的父子关系。

二、语法:

select * from 表名 start with 条件1 connnect by 条件2 where 条件3

1、举例:

(1)通过父ID查询所有子节点


select * from group_info start with parent_group_id='0' connect by prior group_id=parent_group_id

 

 

(2)通过子ID查询所有父节点


select * from group_info start with group_id='61' connect by prior parent_group_id=group_id


2、说明:

(1)start with 后面的条件表示递归从哪里开始。


select * from group_info start with parent_group_id='0' connect by prior group_id=parent_group_id 从父编号为0的数据开始查
select * from group_info start with group_id='0' connect by prior group_id=parent_group_id 从编号为0的数据开始查
显然在需要查询父节点为0的所有子节点时,第二条查询语句会包含父节点。
(2)connect by 条件2 表示 递归时前后两条数据是以条件2来建立联系的

 

(3)prior的位置决定了递归时的具体关系或者说是决定了查询时的检索顺序。

prior 字段1=字段2 可以理解为当前节点的字段1等于下一个节点的字段2


select * from group_info start with group_id='5' connect by parent_group_id= prior group_id

可以理解为 当前节点的group_id 是下一个节点的parent_group_id ,也就是查询 父节点下的所有子节点
(当前这条记录的group_id =下一条记录的parent_group_id )

 

 

 

 

select * from group_info start with group_id='5' connect by prior parent_group_id= group_id

 

可以理解为当前节点的parent_group_id 是下一个节点的group_id ,也就是查询子节点的所有父节点


(4)level关键字表示层次

可通过level 关键字表示查询结果所在层次,根节点的层号为1


select g.* , level from group_info g start with parent_group_id=0 connect by prior group_id=parent_group_id

原文链接:https://blog.csdn.net/bondchenj/article/details/78581625

标签:遍历,group,parent,prior,id,start,oracle,节点
来源: https://www.cnblogs.com/CarryYou-lky/p/16385482.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有