MySQL一次查询更新多行数据

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(112233);

这样就仅使用一条语句更新了多条记录。

那么如果要更新多行记录的多个字段,例如要更新表中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(112233);

版权声明:本文为YanLeaon原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。