Oracle递归查询(start with)向上查询和向下查询

本文深入探讨Oracle数据库中使用START WITH和CONNECT BY进行递归查询的方法。通过具体示例,解释了如何从不同起点进行向上或向下查询,以及连接条件中父节点与子节点顺序的灵活性。对于理解和应用复杂的数据层次结构查询具有指导意义。
摘要由CSDN通过智能技术生成

令人迷糊的Oracle递归查询(start with)

读了上面文章,对递归查询有了初步理解,

创建Tree表如下:

基本含义:

select * from TREE start with FATHER = '爷爷' connect by FATHER = prior SON;

此查询意思就是,从 FATHER = '爷爷' 开始查询,将前面查询到的 SON 作为后面递归查询的条件。

如果改为 start with FATHER = '爸爸',只是起点不同,会少一条记录。

上面的查询也可改为如下,查询结果相同。

select * from TREE start with SON = '爸爸' connect by FATHER = prior SON;

 

对原文第四点进行补充:

connect by 后面 son 和 father 顺序可以互换,

即“CONNECT BY PRIOR son = father;” 也可以写成 ”CONNECT BY father = PRIOR son;”

查询结果是一样的:

个人更倾向于前面的写法,更符合SQL条件查询格式,即 某列名 = 某值,

向下查询和向上查询:

以SON=“爸爸”为起始点,

向上查询:

select * from tree start with son = '爸爸' connect by prior father = son;

select * from tree start with son = '爸爸' connect by son = prior father;

向下查询:

select * from tree start with son = '爸爸' connect by prior son = father; 

select * from tree start with son = '爸爸' connect by father = prior son; 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值