您的位置:首页 > 数据库 > Oracle

Oracle查询树型关系(start with connect by prior)

2017-03-15 15:35 561 查看
用于B树结构类型的数据递归查询,给出B树结构类型中的任意一个结点,遍历其最终父结点或者子结点:

--创建测试表
create table dept_test_demo
(
id VARCHAR2(5) not null,
dept VARCHAR2(5),
parent_dept VARCHAR2(5)
)
--插入数据
insert into dept_test_demo(id,dept,parent_dept) values ('1','1','');
insert into dept_test_demo(id,dept,parent_dept) values ('2','2','1');
insert into dept_test_demo(id,dept,parent_dept) values ('3','3','1');
insert into dept_test_demo(id,dept,parent_dept) values ('4','21','2');
insert into dept_test_demo(id,dept,parent_dept) values ('5','22','2');
insert into dept_test_demo(id,dept,parent_dept) values ('6','23','2');
insert into dept_test_demo(id,dept,parent_dept) values ('7','222','22');
insert into dept_test_demo(id,dept,parent_dept) values ('8','31','3');
insert into dept_test_demo(id,dept,parent_dept) values ('9','32','3');
insert into dept_test_demo(id,dept,parent_dept) values ('10','33','3');
insert into dept_test_demo(id,dept,parent_dept) values ('11','333','33');


select * from dept_test_demo



如上图所示,1是父部门,2,3是1的子部门;21、22、23是2的子部门,222是22的子部门;31、32、33是3的子部门,333是33的子部门。

现在我们查看部门2及其所有子部门

select * from dept_test_demo d start with d.dept = 2 connect by prior d.dept = d.parent_dept



现在我们查看部门2及其所有父部门

select * from dept_test_demo d start with d.dept = 2 connect by d.dept = prior d.parent_dept

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息