使用自带的语句构建批量更新
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)
参考: