不灭的火

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

作者:AlbertWen  添加时间:2020-12-13 00:00:11  修改时间:2025-03-11 01:12:50  分类:MySQL/Redis  编辑

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

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

1
2
3
4
5
6
7
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)

1
2
3
4
5
6
7
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行数据执行。

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

1
2
3
4
5
6
7
8
9
10
11
12
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)

1
2
3
4
5
6
7
8
9
10
11
12
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批量插入与更新