我在MySQL数据库“用户”中获得了该表。它具有字段“ id”和“ value”。
现在,我想更新 大量 在这个表中有行 单个 SQL查询,但许多行应该得到不同的值。目前,我正在使用此:
UPDATE users SET value = CASE id WHEN 1 THEN 53 WHEN 2 THEN 65 WHEN 3 THEN 47 WHEN 4 THEN 53 WHEN 5 THEN 47 END WHERE id IN (1,2,3,4,5)
这行得通。但是我觉得我可以做一些优化,因为我只为行分配了3或4个不同的值。如您所见,现在分别是47、53和65。有没有一种方法可以更新在同一查询中同时获得相同值的所有行?或者,还有另一种方法可以优化这一点吗?
与其case variable when value then ...尝试做,不如做case when condition then ...-像这样:
case variable when value then ...
case when condition then ...
UPDATE users SET value = CASE WHEN id in (1,4) THEN 53 WHEN id = 2 THEN 65 WHEN id in (3,5) THEN 47 END WHERE id IN (1,2,3,4,5)