-
StackOverflow 文档
-
SQL 教程
-
常用表格表达式
-
递归枚举子树
WITH RECURSIVE ManagedByJames(Level, ID, FName, LName) AS (
-- start with this row
SELECT 1, ID, FName, LName
FROM Employees
WHERE ID = 1
UNION ALL
-- get employees that have any of the previously selected rows as manager
SELECT ManagedByJames.Level + 1,
Employees.ID,
Employees.FName,
Employees.LName
FROM Employees
JOIN ManagedByJames
ON Employees.ManagerID = ManagedByJames.ID
ORDER BY 1 DESC -- depth-first search
)
SELECT * FROM ManagedByJames;
水平 |
ID |
FName 参数 |
LName |
1 |
1 |
詹姆士 |
工匠 |
2 |
2 |
约翰 |
约翰逊 |
3 |
4 |
乔纳森 |
工匠 |
2 |
3 |
迈克尔 |
威廉姆斯 |