在MySQL中,`CASE WHEN` 语句是一种条件表达式,它用于基于一个或多个条件执行不同的操作或返回值。这在SQL查询中特别有用,尤其是当你需要根据不同条件对结果进行不同的处理时。下面是 `CASE WHEN` 的基本用法和示例。
### 基本语法:
```sql
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result_else
END
```
### 示例:
假设有一个名为 `students` 的表,其中包含学生的分数和名字。你想要根据分数将学生分为不同的等级。可以使用以下查询:
```sql
SELECT name, score,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 75 THEN '良好'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END AS grade
FROM students;
```
在这个例子中,我们根据学生的分数将他们分为四个等级:优秀、良好、及格和不及格。如果分数满足某个条件,`CASE WHEN` 就会返回相应的结果。如果不满足任何条件,它会返回 `ELSE` 子句中的结果(在这个例子中是 '不及格')。如果没有 `ELSE` 子句并且没有条件被满足,`CASE` 表达式将返回 `NULL`。
### 使用 `CASE` 在 `ORDER BY` 子句中:
你还可以使用 `CASE WHEN` 在 `ORDER BY` 子句中,以便根据特定条件对结果进行排序。例如,假设你想根据上面示例中的等级对学生进行排序:
```sql
SELECT name, score, grade
FROM students
ORDER BY
CASE grade
WHEN '优秀' THEN 1
WHEN '良好' THEN 2
WHEN '及格' THEN 3
ELSE 4
END;
```
在这个例子中,我们首先根据等级对学生进行排序。优秀的学生会被排在前面,然后是良好、及格和不及格的学生。这是通过在 `ORDER BY` 子句中使用 `CASE WHEN` 来实现的。
总之,`CASE WHEN` 在MySQL中是一个强大的工具,允许你在查询中根据条件执行不同的操作或返回不同的值。