Rit*_*its 7 mysql sql sql-update
我在我的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)
Run Code Online (Sandbox Code Playgroud)
这有效.但我觉得我可以做一些优化,因为我只分配了3到4个不同的值.正如您所看到的,现在这些是47,53和65.有没有办法可以在同一个查询中同时更新同时获得相同值的所有行?或者,还有另一种方法可以优化吗?
小智 13
而不是做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)
Run Code Online (Sandbox Code Playgroud)
小智 8
假设id是唯一的或主要的......
insert into users
(id,value)
VALUES
(1,53),(2,65),(3,47),(4,53),(5,47)
on duplicate key update
value=VALUES(value)
Run Code Online (Sandbox Code Playgroud)