原文链接: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;