星空思维

导航

Oracle树形结构查询之prior的理解

--1 建表

create table 宇宙
(
行星等级 number
,行星名称 varchar2(50)
,上级行星等级 number
);

--2 数据准备

insert into 宇宙 (行星等级, 行星名称, 上级行星等级)
values (1, '地球', 2);

insert into 宇宙 (行星等级, 行星名称, 上级行星等级)
values (2, '太阳', 3);

insert into 宇宙 (行星等级, 行星名称, 上级行星等级)
values (0, '月球', 1);

insert into 宇宙 (行星等级, 行星名称, 上级行星等级)
values (3, '银河', 4);

insert into 宇宙 (行星等级, 行星名称, 上级行星等级)
values (4, '宇宙', 5);

insert into 宇宙 (行星等级, 行星名称, 上级行星等级)
values (5, '思维', null);

commit;

--3 prior 这个关键字究竟如何理解
select * from 宇宙 start with 行星等级=1 connect by prior 行星等级=上级行星等级;
select * from 宇宙 start with 行星等级=1 connect by 上级行星等级=prior 行星等级;

--3.1 结果返回

行星等级   行星名称    上级行星等级

1       地球       2
0       月球       1

--4 结论 

以上面例子为例 prior 行星等级 就表示 当前节点 行星等级。

在整个SQL执行的一开始 ,当前节点就是 start with 行星等级=1 这个节点。

posted on 2017-05-11 15:13  星空思维  阅读(367)  评论(0编辑  收藏  举报