⚡ 编程实验室🏗️ 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🎮 游戏🏠 网站首页

MySQL 公用表表达式(CTE)

使用WITH子句编写更清晰的递归和非递归查询。 · 难度:入门 · +15XP

MySQL 公用表表达式(CTE)

CTE(Common Table Expression)是MySQL 8.0引入的临时结果集,使用WITH子句定义,在同一查询中可多次引用,提高SQL可读性和复用性。

非递归CTE

WITH sales_summary AS (
    SELECT department, SUM(amount) AS total_sales
    FROM orders
    GROUP BY department
)
SELECT * FROM sales_summary WHERE total_sales > 10000;

递归CTE

递归CTE用于处理树形结构数据,如组织架构、分类层级。

WITH RECURSIVE cte AS (
    -- 初始查询(锚点)
    SELECT id, name, parent_id, 1 AS level
    FROM categories WHERE parent_id IS NULL
    UNION ALL
    -- 递归查询
    SELECT c.id, c.name, c.parent_id, cte.level + 1
    FROM categories c
    INNER JOIN cte ON c.parent_id = cte.id
)
SELECT * FROM cte;

CTE与子查询对比

练习提示

创建一个类别表,使用递归CTE查询所有子分类及其层级深度。或者使用非递归CTE计算各部门的平均薪资并与整体平均比较。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 68 篇
0 完成
🔥 0