我有以下Oracle SQL查询:
select id_emp_no,
LEVEL,
CONNECT_BY_ISLEAF isleaf
from my_table
start with id_emp_no = :x
connect by prior my_mgr = id_emp_no
ORDER BY level
这会产生以下输出:
ID_EMP_NO LEVEL ISLEAF
11 1 0
22 2 0
33 3 0
44 4 0
55 5 0 <<====
66 6 1
根据上面的输出,我特别追溯的实际结果ID_EMP_NO是ID_EMP_NO = 55,即最大级别之前的记录和ISLEAF之前的记录等于1。
所以我只想返回ID_EMP_NO = 55的记录。
答案 0 :(得分:4)
请记住,prior
只不过是一个操作符,从层次结构的上层指定此列的值,这意味着您可以(几乎)在查询中的任何位置使用它:
select prior id_emp_no
from my_table
where CONNECT_BY_ISLEAF = 1
start with id_emp_no = 11
connect by prior my_mgr = id_emp_no
<强> Results 强>:
| PRIORID_EMP_NO |
------------------
| 55 |