MySQL中的CASE WHEN语句
在MySQL中,CASE WHEN
语句是一种用于执行条件判断的表达式。它类似于编程语言中的switch
语句,可以根据指定的条件来执行不同的逻辑操作。CASE WHEN
语句可以用在SELECT语句中作为条件表达式,也可以用在UPDATE和DELETE语句中进行修改和删除操作。
语法
CASE WHEN
语句的基本语法如下:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
CASE
是CASE WHEN
语句的开始关键字。WHEN condition1 THEN result1
表示如果满足condition1
条件,则返回result1
结果。ELSE default_result
表示如果以上条件都不满足,则返回default_result
结果。END
表示CASE WHEN
语句的结束。
示例
示例数据库表
为了演示CASE WHEN
语句的用法,我们首先创建一个名为students
的示例表,包含学生的姓名和分数信息。
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
score INT NOT NULL
);
INSERT INTO students (name, score) VALUES
('Alice', 85),
('Bob', 65),
('Charlie', 75),
('David', 90),
('Eve', 55);
查询示例
假设我们想要根据学生的分数等级来进行查询,可以使用CASE WHEN
语句实现。
SELECT
name,
score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
WHEN score >= 60 THEN 'D'
ELSE 'F'
END AS grade
FROM students;
运行以上查询,将会得到如下结果:
+---------+-------+-------+
| name | score | grade |
+---------+-------+-------+
| Alice | 85 | B |
| Bob | 65 | D |
| Charlie | 75 | C |
| David | 90 | A |
| Eve | 55 | F |
+---------+-------+-------+
以上查询根据学生的分数将其等级分为’A’、’B’、’C’、’D’和’F’等级。
更新示例
除了在查询中使用,CASE WHEN
语句也可以用在更新数据时的条件判断中。
UPDATE students
SET
score = CASE
WHEN score >= 90 THEN score + 5
WHEN score >= 80 THEN score + 3
ELSE score
END;
运行以上更新语句,将会根据学生的分数等级增加不同的分数:
+---------+-------+-------+
| name | score | grade |
+---------+-------+-------+
| Alice | 90 | B |
| Bob | 68 | D |
| Charlie | 78 | C |
| David | 95 | A |
| Eve | 55 | F |
+---------+-------+-------+
以上更新操作根据学生的分数等级增加了相应的分数。
总结
通过以上示例,我们可以看到CASE WHEN
语句在MySQL中的灵活应用。它可以根据不同的条件执行不同的逻辑操作,适用于查询、更新、删除等多种数据库操作中的条件判断场景。在实际开发中,灵活运用CASE WHEN
语句可以简化SQL语句的编写,提高数据处理效率。