mysql批量更新数据为不同的值

当多条数据需要根据条件分别更新为不同值的时候,应该如何完成?

当数据都要被更新为相同的值时,mysql可以很简单的实现,如:

UPDATE user SET name = 'Tom' WHERE user_id = '100';

而当多条数据都需要更新且更新的数据不同时,如果直接采用循环的方法,虽然可以达到目的,但是当数据量比较大时,大量的mysql操作会使性能变得很差,并且造成阻塞。

Google了一下,找到了可行的解决办法,当需要把多条数据分别更新为不同的值时,可以采用 UPDATE SET WHEN THEN 的语法,例如:

UPDATE user_info SET
  `username` =  case user_id WHEN 100 THEN 'Tom' WHEN 101 THEN 'Sue' END ,
  `age` =  case user_id WHEN 100 THEN '18' WHEN 101 THEN '20' END
WHERE user_id in (100,101)

这样就可以在不影响性能的前提下,一次性把多条数据更新为不同的值。

Show Comments