版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
结果: