⚡ 编程实验室🏗️ 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 CASE WHEN 条件表达式

学习 CASE WHEN 条件分支 · 难度:进阶 · +15XP

SQL CASE WHEN 条件表达式

SQL CASE WHEN — 在查询中做条件判断

学习前的准备

你需要一个 MySQL 数据库环境。CASE WHEN 表达式让你在 SQL 中实现“如果...则...否则...”的逻辑判断,类似于编程语言中的 if/else。

搜索式 CASE(最常用)

SELECT
    student,
    score,
    CASE
        WHEN score >= 90 THEN '优秀'
        WHEN score >= 80 THEN '良好'
        WHEN score >= 60 THEN '及格'
        ELSE '不及格'
    END AS grade
FROM scores
ORDER BY score DESC;

CASE WHEN 与聚合函数配合(最强大的用法)

-- 统计每个学生各等级的数量
SELECT
    student,
    COUNT(CASE WHEN score >= 90 THEN 1 END) AS '优秀',
    COUNT(CASE WHEN score >= 80 AND score < 90 THEN 1 END) AS '良好',
    COUNT(CASE WHEN score < 60 THEN 1 END) AS '不及格'
FROM scores
GROUP BY student;

-- 行转列:各科成绩横向显示 SELECT student, MAX(CASE WHEN subject = '数学' THEN score END) AS '数学', MAX(CASE WHEN subject = '英语' THEN score END) AS '英语', AVG(score) AS '平均分' FROM scores GROUP BY student;

CASE WHEN 在 UPDATE 中使用

UPDATE scores
SET score = score +
    CASE
        WHEN score >= 90 THEN 2
        WHEN score >= 80 THEN 3
        WHEN score >= 60 THEN 5
        ELSE 10
    END;

CASE WHEN 在 ORDER BY 中

SELECT * FROM scores
ORDER BY
    CASE subject
        WHEN '数学' THEN 1
        WHEN '英语' THEN 2
        ELSE 3
    END,
    score DESC;

小结

CASE WHEN 是 SQL 的“条件判断引擎”。配合 COUNT/SUM 实现条件聚合,配合 GROUP BY 实现行转列,在 UPDATE 中做条件更新,在 ORDER BY 中自定义排序。掌握了 CASE WHEN,你就能在数据库中完成以前需要导出到 Excel 才能做的分类统计工作。

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

🏆 学习排行

加载中...

📊 统计

📖 146 篇
0 完成
🔥 0