⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

SQL 递归查询实战模式

递归CTE实战:BOM物料清单爆炸、组织架构树、路径查找(地铁换乘)、图遍历、斐波那契数列、日期序列生成 · 难度:入门 · +10XP

SQL 递归CTE实战 —— 树形数据遍历

递归CTE(WITH RECURSIVE)是SQL中最强大的查询模式之一,专门处理树形结构数据——组织架构、分类层级、物料清单(BOM)等。

基本语法

WITH RECURSIVE cte_name AS (
  -- 基础查询(锚点):起始行
  SELECT id, name, parent_id, 1 AS level FROM categories WHERE parent_id IS NULL
  UNION ALL
  -- 递归部分:引用cte自身
  SELECT c.id, c.name, c.parent_id, cte.level + 1
  FROM categories c JOIN cte ON c.parent_id = cte.id
)
SELECT * FROM cte_name;

实战:组织架构树

WITH RECURSIVE org_tree AS (
  SELECT id, name, manager_id, 1 AS depth, CAST(name AS CHAR(500)) AS path
  FROM employees WHERE manager_id IS NULL
  UNION ALL
  SELECT e.id, e.name, e.manager_id, t.depth + 1,
         CONCAT(t.path, ' > ', e.name)
  FROM employees e JOIN org_tree t ON e.manager_id = t.id
)
SELECT CONCAT(REPEAT('  ', depth-1), name) AS 组织架构 FROM org_tree;

动手练习

  1. 基础练习:用递归CTE查询所有顶级分类及其所有子分类。
  2. 进阶应用:用递归CTE实现BOM物料清单的成本汇总。
  3. 项目实战:在分类/组织/菜单等树形数据中替换递归查询的手写代码。
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 146 篇
0 完成
🔥 0