使用不同的值更新多个行

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)

  • 我不知道为什么这票这么少。这是完美的! (2认同)