MySQL
一次查询更新多行数据:
例如要更新表中stu_id为11,22,32的学生的成绩为88,90,95,应该如何写UPDATE语句?
UPDATE的一般写法:
UPDATE stu SET stu_score = '88' WHERE stu_id = '1';
这样要更新多行记录就需要写多条更新语句,那么是否可以用一条语句进行更新呢?答案是可以的。
我们可以在SET子语句中加入CASE分支判断:
update stu SET stu_score = CASE id
WHEN 11 THEN 88
WHEN 22 THEN 90
WHEN 33 THEN 95
END
WHERE id IN(11,22,33);
这样就仅使用一条语句更新了多条记录。
那么如果要更新多行记录的多个字段,例如要更新表中stu_id为11,22,33的学生的成绩和身高分别为88,99,95和170,180,175那么可以使用以下的语句:
update stu SET stu_score = CASE id
WHEN 11 THEN 88
WHEN 22 THEN 90
WHEN 33 THEN 95
END,
stu_height = CASE id
WHEN 11 THEN 170
WHEN 22 THEN 180
WHEN 33 THEN 175
END
WHERE id IN(11,22,33);