mysql case when 控制流函数
是 MySQL 中的一个控制流函数。它用于在查询中执行条件判断,根据某个条件的真假来决定返回哪个值。CASE WHEN
的基本语法如下
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... [ELSE resultN] END
其中,condition1、condition2等表示条件表达式,result1、result2等表示对应条件成立时返回的值。ELSE子句是可选的,当所有条件都不成立时,会返回 ELSE子句中的值。
准备数据
-- 创建学生表 CREATE TABLE students ( student_id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, score INT ); -- 插入数据 INSERT INTO students (student_id, name, score) VALUES (1, 'Alice', 95), (2, 'Bob', 85), (3, 'Carol', 65), (4, 'David', 40);
以下是一个使用 CASE WHEN的示例。假设我们有一个学生表(students),包含以下字段:student_id(学生 ID)、name(学生姓名)和 score(学生成绩)。我们希望查询每个学生的姓名、成绩以及成绩等级(优秀、良好、及格、不及格)。
示例数据:
student_id | name | score |
---|---|---|
1 | Alice | 95 |
2 | Bob | 85 |
3 | Carol | 65 |
4 | David | 40 |
SELECT name, score, -- 使用 CASE WHEN 对成绩进行等级划分 CASE WHEN score >= 90 THEN '优秀' WHEN score >= 80 THEN '良好' WHEN score >= 60 THEN '及格' ELSE '不及格' END AS grade FROM students;
查询结果:
name | score | grade |
---|---|---|
Alice | 95 | 优秀 |
Bob | 85 | 良好 |
Carol | 65 | 及格 |
David | 40 | 不及格 |
在此示例中,我们使用 CASE WHEN
对学生成绩进行等级划分。CASE WHEN
语句中的条件从上到下依次判断,当某个条件成立时,返回对应的值(成绩等级)。在这个例子中,当成绩大于等于 90 分时,返回 '优秀';成绩大于等于 80 分时,返回 '良好';成绩大于等于 60 分时,返回 '及格';否则,返回 '不及格'。
示例2
查询各分值有多少人
select sum(case when score >=60 then 1 else 0 end) as 'pass', sum(case when score >=70 then 1 else 0 end) as 'medium', sum(case when score >=80 then 1 else 0 end) as 'good', sum(case when score >=90 then 1 else 0 end) as 'excellent' from sc;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!