oracle 3个表 递归,Oracle递归查询(start with…connect by prior)

本文介绍了Oracle数据库中使用start with...connect by prior进行递归查询的方法,包括如何指定根节点、处理循环、利用level和CONNECT_BY_ROOT关键字,以及实现序列和查询时间周期等应用场景。
摘要由CSDN通过智能技术生成

查询基本结构:

select … from table_name

start with 条件1

connect by 条件2

1、建测试用表

1 create tabletest_prior(2 ids number,3 son varchar2(200),4 father varchar2(200)5 );

并插入数据

887e738bbfa106e7b4b9eaa2446dc1e6.png

start with指定树的根(即父节点)实际上你还可以指定多个根的,比如 father in ('爷爷', '爸爸')

而connect by prior son = father相当于表名在递归的过程中,查找到的树中其它节点接着又作为根结点。然后继续递归(prior在的一侧表示该侧为子节点)

为了便于理解可以可以connect by prior那一行当作多余的,只记住要查询的列名放前面,根列名放等号后面就行,这样只要指定树的根结点就比较好理解了。

1 selectson2 fromtest_prior3 start with father = '爷爷'

4 connect by prior son =father;5

6 select distinctson7 fromtest_prior8 start with father in( '爷爷' , '爸爸' )--指定多个根会出现重复的数据

9 connect by prior son = fa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值