具有不同值的MySQL批处理更新语句

问题描述 投票:3回答:3

是否有与这些等效的single SQL语句?

UPDATE table_name SET (a = 'something', b='B1') WHERE id=1;
UPDATE table_name SET (a = 'something else', b='B2') WHERE id=2;
UPDATE table_name SET (a = 'another', b='B3') WHERE id=3;
mysql sql sql-update
3个回答
5
投票

是,这个:

UPDATE table_name
   SET a = CASE WHEN id = 1
                THEN 'something'
                WHEN id = 2
                THEN 'something else'
                WHEN id = 3
                THEN 'another'
           END
 WHERE id IN (1,2,3)
;

但是我不确定这是否是您的初衷?


1
投票

如果要插入更大的数据数组,则可以使用ON DUPLICATE KEY UPDATE构造。在MySQL中它将更加有效。

有关使用示例,请参见ON DUPLICATE KEY UPDATE类似问题。


0
投票

您可以使用具有恒定值的选择行,然后将其与表联接。

my answer here

参考UPDATE table_name T INNER JOIN (select 1 as id,'something' as a,'B1' as b union all select 2,'something','B2' union all select 3,'another','B2') V on T.id = V.id set T.a = V.a, T.b = V.b;


推荐问答