在MySQL中,`CASE WHEN`语句用于在查询中进行条件判断,并返回基于这些条件的结果。它可以在SELECT语句、UPDATE语句或DELETE语句中使用。`CASE WHEN`语句的结构如下:
```sql
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
```
这里是一个简单的例子,假设我们有一个名为`students`的表,其中包含学生的姓名和分数,我们想要基于分数将学生分类为"优秀"、"良好"、"及格"或"不及格"。
```sql
SELECT name, score,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 80 THEN '良好'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END AS grade_level
FROM students;
```
在这个例子中,我们使用了`CASE WHEN`语句来检查每个学生的分数,并返回相应的等级。如果分数大于或等于90,学生将被标记为"优秀",如果分数在80到89之间,则标记为"良好",依此类推。如果没有匹配的条件,它将默认为"不及格"。结果集中的每一行都会显示学生的姓名、分数和等级。
此外,`CASE WHEN`也可以在没有明确的`CASE`关键字的情况下使用,这时它是一个表达式的一部分。例如:
```sql
SELECT name, score, IF(score >= 90, '优秀', IF(score >= 80, '良好', '不及格')) AS grade_level FROM students;
```
在这个例子中,我们使用了MySQL的内置函数`IF()`来替代`CASE WHEN`语句。这两种方法在功能上是相似的,只是语法略有不同。