Oracle connect by prior用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ScongHW/article/details/85244767

Oracle 中 connect by prior的用法:层级查询,用于查询具有层级关系(树状结构)的数据(父子关系、雇佣关系)。

语法:

select [level]  ... from table_name

start with condition1

connect by condition2 [prior]

where condition3

例如:

select level,empno,ename,mgr from emp connect by prior empno = mgr start with mgr is null order by 1;

level :代表着节点所在的层

prior : 一个运算符,可以放在等号前后,决定着查询时的搜索顺序

start with : 表示根节点

connect by :关键字,用于连接递归查询的条件

首先,先看一下下面这张表

其中,存在一种雇佣关系,表中存在两个字段EMPNO和MGR,通过这两个字段可以查询到雇员的信息和其领导的信息。

方法一:通过自连接查询

select e.ename 员工姓名,f.ename 老板姓名 from emp e,emp f where e.mgr = f.empno ;

结果:

方法二:使用层次查询

由于自连接查询效率低,不合适操作大表,因此可以使用层次查询来解决。

select level, empno,ename,mgr from emp connect by prior empno = mgr start with mgr is null order by 1;

结果:

猜你喜欢

转载自blog.csdn.net/ScongHW/article/details/85244767