一尘不染

使用where语句批量更新mysql

mysql

如何批量更新mysql数据?如何定义这样的事情:

UPDATE `table` 
WHERE `column1` = somevalues
SET  `column2` = othervalues

具有一些值,例如:

VALUES
    ('160009'),
    ('160010'),
    ('160011');

和其他值:

VALUES
    ('val1'),
    ('val2'),
    ('val3');

也许用mysql是不可能的?一个PHP脚本?


阅读 515

收藏
2020-05-17

共1个答案

一尘不染

在这种情况下,最简单的解决方案是使用ON DUPLICATE KEY UPDATE构造。它的工作速度非常快,并且可以轻松完成工作。

INSERT into `table` (id, fruit)
    VALUES (1, 'apple'), (2, 'orange'), (3, 'peach')
    ON DUPLICATE KEY UPDATE fruit = VALUES(fruit);

或使用CASE建筑

UPDATE table
SET column2 = (CASE column1 WHEN 1 THEN 'val1'
                 WHEN 2 THEN 'val2'
                 WHEN 3 THEN 'val3'
         END)
WHERE column1 IN(1, 2 ,3);
2020-05-17