我在我的 MySQL 数据库“users”中得到了这个表。它具有字段“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 ...
- 像这样:
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)
关于mysql - 使用不同的值更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3882388/