start with connect by prior 递归查询用法

原文链接:https://www.cnblogs.com/benbenduo/p/4588612.html

对应的B树结构为:

现在要求给出其中一个节点值,求其最终父节点。以7为例:

start with子句:遍历起始条件,如果要查父节点,这里就用子节点的列;如果要查子节点,就用父节点的列

这里查的是父节点,起始条件用subid(即子节点的列)

connect by子句:连接条件。关键字prior,prior跟父节点列parentid放在一起,就是往父节点方向遍历;prior跟子节点列subid放在一起,则往叶子节点方向遍历。parentid、subid两列谁放在“=”前都无所谓,关键是prior跟谁在一起

order by子句:排序

level关键字:显示当前节点在树中所处的层级

 

附原始数据:

create table a_test
( parentid varchar2(10),
  subid    varchar2(10));

insert into a_test values ( '1', '2' );
insert into a_test values ( '1', '3' );
insert into a_test values ( '2', '4' );
insert into a_test values ( '2', '5' );
insert into a_test values ( '3', '6' );
insert into a_test values ( '3', '7' );
insert into a_test values ( '5', '8' );
insert into a_test values ( '5', '9' );
insert into a_test values ( '7', '10' );
insert into a_test values ( '7', '11' );
insert into a_test values ( '10', '12' );
insert into a_test values ( '10', '13' );

commit;

select * from a_test;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值