- 
  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 | 迈克尔 | 威廉姆斯 |