oracle树状结构层级查询小结--connect by等

本文总结了Oracle中使用connect by进行树状结构层级查询的方法,包括start with、connect by、prior关键字的解释及实战应用。通过示例展示了如何遍历父节点、子节点,以及利用sys_connect_by_path函数获取节点路径。内容涵盖不同层级数据的查询和排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oracle树状结构层级查询小结--connect by等

一、简介:
(1)oracle树状结构查询即层次递归查询,是sql语句经常用到的。
(2)树状结构通常由根节点、父节点、子节点和叶节点组成,简单来说,一张表中存在两个字段,dept_id,par_dept_id,那么通过找到每一条记录的父级id即可形成一个树状结构,也就是par_dept_id=dept_id,通俗的说就是这条记录的par_dept_id是另外一条父级记录的dept_id,其树状结构层级查询的基本语法是:

  SELECT [LEVEL],*
  FEOM table_name 
  START WITH 条件1
  CONNECT BY PRIOR 条件2
  WHERE 条件3
  ORDER BY 排序字段;

说明:LEVEL---伪列,用于表示树的层次

     条件1---根节点的限定条件,当然也可以放宽权限,以获得多个根节点,也就是获取多个树

    条件2---连接条件,目的就是给出父子之间的关系是什么,根据这个关系进行递归查询

    条件3---过滤条件,对所有返回的记录进行过滤

     排序字段---对所有返回记录进行排序

(3)关键字解析:
1)start with 子句:遍历起始条件,如果要查父节点,这里可以用子结点的列,如果要查子节点,这里可以用父节点的列。
2)connect by 子句:连接条件。
3)prior:
要的时候有两种写法:connect by prior dept_id=par_dept_id 或 connect by dept_id=prior par_dept_id,
前一种写法表示采用自上而下的搜索方式(先找父节点然后找子节点),
后一种写法表示采用自下而上的搜索方式(先找叶子节点然后找父节点)。 

也可以这样理解:
prior跟父节点列parentid放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值