是 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 分时,返回 '及格';否则,返回 '不及格'。