小编典典

更新具有不同值的多行

sql

我在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。有没有一种方法可以更新在同一查询中同时获得相同值的所有行?或者,还有另一种方法可以优化这一点吗?


阅读 148

收藏
2021-03-17

共1个答案

小编典典

与其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)
2021-03-17