MySQL批量更新

2020/11/29 DB mysql

MySQL批量更新,相对于一个个更新,效率肯定更快,特别是在有限定时间内需要实现大批量的更新,节约很多时间成本,近期实现也遇到一些坑,做些整理总结。

实现方式:

  • replace into
    replace into t (id,name) values (1,'2'),(2,'3');
    

    使用的时候要注意:记录已存在是先删除再创建,所以只是更新某些字段使用这个会造成很大的数据丢失问题,切勿直接使用;

  • insert into …on duplicate key update批量更新
    insert into t (id,name) values (1,'2'),(2,'3') on duplicate key update name=values(name);;
    

    这个用的也是比较多的,更新逻辑不会出现上面所说的问题;

  • 批量更新
    UPDATE t
      SET name = CASE id 
          WHEN 1 THEN 3 
          WHEN 2 THEN 4 
          WHEN 3 THEN 5 
      END
    WHERE id IN (1,2,3)
    
  • 临时表
    create temporary table tmp(id int(4) primary key,dr varchar(50));
    insert into tmp values  (0,'gone'), (1,'xx'),(m,'yy');
    update t, tmp set t.dr=tmp.dr where t.id=tmp.id;
    

    临时表也是一个思路。

Search

    Table of Contents