MySQL 如何使用一条查询语句批量更新数据?
在MySQL中,如果需要批量更新数据,可以使用UPDATE语句结合CASE语句进行操作。下面举例说明。
阅读更多:MySQL 教程
示例
假设有一张学生表student,其中有以下记录:
id | name | age | gender |
---|---|---|---|
1 | Tom | 18 | male |
2 | Jerry | 19 | male |
3 | Alice | 20 | female |
4 | Bob | 21 | male |
现在需求是将年龄小于20岁的男生全部改成19岁,并将年龄大于20岁的女生全部改成21岁。
这个操作可以使用以下语句实现:
UPDATE student SET age = CASE
WHEN age < 20 AND gender = 'male' THEN 19
WHEN age > 20 AND gender = 'female' THEN 21
ELSE age
END,
gender = CASE
WHEN age < 20 AND gender = 'male' THEN 'male'
WHEN age > 20 AND gender = 'female' THEN 'female'
ELSE gender
END;
执行上述语句后,学生表student的记录变成了以下样子:
id | name | age | gender |
---|---|---|---|
1 | Tom | 19 | male |
2 | Jerry | 19 | male |
3 | Alice | 21 | female |
4 | Bob | 21 | male |
可以看到,年龄小于20岁的男生全部改成了19岁,并将年龄大于20岁的女生全部改成了21岁。
总结
使用UPDATE语句结合CASE语句可以方便地批量更新数据。在使用时要注意语法和逻辑的正确性,以免造成数据误操作。