组织架构示例
组织架构示例
WITH RECURSIVE org AS (
SELECT id, name, manager_id, 1 AS lvl
FROM employees
WHERE manager_id IS NULL
UNION ALL
SELECT e.id, e.name, e.manager_id, o.lvl + 1
FROM employees e
JOIN org o ON e.manager_id = o.id
)
SELECT lvl, id, name
FROM org
ORDER BY lvl, id;| 结构 | 初始查询 UNION ALL 递归查询(递归项引用 CTE 自身) |
|---|---|
| 自引用 | 代表上一轮展开出的行 |
| 收敛 | 由连接条件自然收敛或加深度限制 |