首页/数据/SQL 速查/递归 CTE:树形结构展开
本包目录(311 条)

递归 CTE:树形结构展开

WITH RECURSIVE 以“初始行 + 递归项”逐步展开层级数据,典型场景是组织架构、分类树、物料清单。

SQL 速查数据更新于 2026-10-12

组织架构示例

组织架构示例
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 自身)
自引用代表上一轮展开出的行
收敛由连接条件自然收敛或加深度限制

易错点

  • MySQL 必须写 WITH RECURSIVE,漏写关键字会报错
  • 递归项连接条件不能收敛时查询不会结束,务必加深度上限

数据来源与参考

  • MySQL 8.0 Reference Manual · Recursive CTEs
  • PostgreSQL Documentation · Recursive Queries
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌