我在我的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。是否有一种方法可以在同一查询中同时更新所有获得相同值的行?或者,还有别的方法可以优化这个吗?
发布于 2010-10-07 14:19:38
与其做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)发布于 2016-01-13 14:01:35
假设id是唯一的或者主要的..。
insert into users
(id,value)
VALUES
(1,53),(2,65),(3,47),(4,53),(5,47)
on duplicate key update
value=VALUES(value)发布于 2010-10-07 14:07:32
我只想用几个不同的更新语句来做这件事。
UPDATE users
SET value = 53
WHERE id = 1;
UPDATE users
SET value = 65
WHERE id = 2;
...如果您只需要在多个行上设置5或6个值,这似乎是最简单的。还是有什么特定的原因需要在一个查询中这样做呢?
https://stackoverflow.com/questions/3882388
复制相似问题