備注:測驗資料庫版本為MySQL 8.0
如需要scott用戶下建表及錄入資料陳述句,可參考:
scott建表及錄入資料sql腳本
一.需求
找到直接及簡介(即JONES下屬的下屬)為JONES作業的所有員工,
JONES下屬的員工串列如下所示:
±------±-----+
| ename | lvl |
±------±-----+
| JONES | 1 |
| SCOTT | 2 |
| FORD | 2 |
| ADAMS | 3 |
| SMITH | 3 |
±------±-----+
二.解決方案
能夠移到數的絕對頂部和底部是非常有用的,
對于這個解決方案,不需要特殊的格式設定,目標只是回傳位于員工JONES下屬的所有員工,其中包括JONES自己,
這種型別的查詢展示了遞回SQL拓展的有用性,如Oracle的connect by和SQL Server/DB 2/MySQL 8.0的with子句等,
with recursive emp2(ename,empno,lvl) as
(
SELECT ename,empno,1 lvl
from emp
where ename = 'JONES'
union ALL
select e1.ename,e1.empno,lvl + 1
from emp e1,emp2 e2
where e1.mgr = e2.empno
)
select ename,lvl from emp2
測驗記錄:
mysql> with recursive emp2(ename,empno,lvl) as
-> (
-> SELECT ename,empno,1 lvl
-> from emp
-> where ename = 'JONES'
-> union ALL
-> select e1.ename,e1.empno,lvl + 1
-> from emp e1,emp2 e2
-> where e1.mgr = e2.empno
-> )
-> select ename,lvl from emp2;
+-------+------+
| ename | lvl |
+-------+------+
| JONES | 1 |
| SCOTT | 2 |
| FORD | 2 |
| ADAMS | 3 |
| SMITH | 3 |
+-------+------+
5 rows in set (0.01 sec)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/264556.html
標籤:其他
