欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SQL-在具有上下级关系的表中,找到没有下级的员工级别路径

程序员文章站 2024-03-15 17:50:18
...

需求:在具有上下级关系的表中,找到没有下级的员工的上级所有员工路径。如:A的下级是B,B的下级是C,C的下级是D,D没有下级。这时输出/A/B/C/D

分析与解答:

使用分层查询【level connect_by_isleaf start with connect by order siblings
connect_by_isleaf=1表示该节点为叶子节点,即没有下级。【connect_by_isleaf 伪列
sys_connect_by_path(ename,'/') 该函数为路径函数

select
level,
empno,
ename,
sys_connect_by_path(ename,'/') 路径,  --路径函数
connect_by_isleaf
from emp
start with mgr is null
connect by (prior empno)=mgr
order siblings by empno;  

SQL-在具有上下级关系的表中,找到没有下级的员工级别路径
上述结果为每一个员工的路径,而取没有下级的员工的路径应加上条件connect_by_isleaf=1
在分层查询中使用where子句,是先查出分层查询的结果,再使用where子句过滤

select
level,
empno,
ename,
sys_connect_by_path(ename,'/') 路径,
connect_by_isleaf
from emp where connect_by_isleaf=1
start with mgr is null
connect by (prior empno)=mgr
order siblings by empno;  

SQL-在具有上下级关系的表中,找到没有下级的员工级别路径

相关标签: SQL sql