PHP笔记网

革命尚未成功,同志仍须努力下载JDK17

作者:Albert.Wen  添加时间:2020-12-13 00:00:11  修改时间:2024-12-20 19:24:59  分类:MySQL/Redis  编辑

使用自带的语句构建批量更新

mysql 实现批量 可以用点小技巧来实现:

UPDATE tableName
    SET orderId = CASE id 
        WHEN 1 THEN 3 
        WHEN 2 THEN 4 
        WHEN 3 THEN 5 
    END
WHERE id IN (1,2,3)

UPDATE tableName
    SET orderId = CASE
        WHEN id=1 THEN 3 
        WHEN id=2 THEN 4 
        WHEN id=3 THEN 5 
    END
WHERE id IN (1,2,3)

这句sql 的意思是,更新orderId 字段,如果id=1 则orderId 的值为3,如果id=2 则orderId 的值为4……

where部分不影响代码的执行,但是会提高sql执行的效率。确保sql语句仅执行需要修改的行数,这里只有3条数据进行更新,而where子句确保只有3行数据执行。

如果更新多个值的话,只需要稍加修改:

UPDATE categories 
    SET orderId = CASE id 
        WHEN 1 THEN 3 
        WHEN 2 THEN 4 
        WHEN 3 THEN 5 
    END, 
    title = CASE id 
        WHEN 1 THEN 'New Title 1'
        WHEN 2 THEN 'New Title 2'
        WHEN 3 THEN 'New Title 3'
    END
WHERE id IN (1,2,3)

UPDATE categories 
    SET orderId = CASE  
        WHEN id=1 THEN 3 
        WHEN id=2 THEN 4 
        WHEN id=3 THEN 5 
    END, 
    title = CASE
        WHEN id=1 THEN 'New Title 1'
        WHEN id=2 THEN 'New Title 2'
        WHEN id=3 THEN 'New Title 3'
    END
WHERE id IN (1,2,3)

 

参考:

大批量更新数据mysql批量更新的4种方法

MySQL批量插入与更新