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

 更新时间:2024年05月06日 11:08:12   作者:小哇666  
这篇文章主要给大家介绍了关于大批量数据用mysql批量更新数据的4种方法,要在MySQL中新增大批量数据,可以通过以下几种方法来实现,文中给出了详细的代码示例,需要的朋友可以参考下

建一个测试表

create table users
(
    id   int auto_increment
        primary key,
    name varchar(255) null,
    age  int          null
);

1 replace into 批量更新【谨慎用】

/**
  没有就新增,id一样,就修改
  特别注意:每列数据都要写上,不然就会设为null,你就惨了
 */
replace into users (id,name,age) values (1,'aa',20),(2,'bb',30),(3,'cc',40);

/* 找死 */
replace into users (id,age) values (1,21),(2,31),(3,41);

/* 正确写法 */
replace into users (id,name,age) values (1,'aa',21),(2,'bb',31),(3,'cc',41);

2 insert into ...on duplicate key update批量更新

/**
  执行第一次:(首次数据库表中没有数据,正常插入)
 */
insert into users (id,name,age) values (1,'aa',20),(2,'bb',30),(3,'cc',40)
on duplicate key update age=age+1;

/**
  没有就新增,id一样,就修改,age 列都加1
 */
insert into users (id) values (1),(2),(3)
on duplicate key update age=age+1;

/**
  将 name 从 'aa' ,改为 'aa-1',
  age加1
 */
insert into users (id,name) values (1,'aa-1'),(2,'bb-1'),(3,'cc-1')
on duplicate key update name=values(name) ,age=age+1;

/**
  将 name 从 ‘aa-1' 改为 'xiaowang'
  age 改为 10 ,以此类推
 */
insert into users (id,name,age) values (1,'xiaowang',10),(2,'xiaoming',15),(3,'xiaochen',20)
on duplicate key update name=values(name),age=values(age);

3 创建临时表,先更新临时表,然后从临时表中update

/**
  创建临时表[session级别的,所以另开个窗口看不见],先更新临时表,然后从临时表中联表update
 */
create temporary table users_temp
select * from users;

select * from users_temp;
/* 修改临时表 */
update users_temp set age=age+1;

/*
修改正式表的记录
set位置,正式表要在前面
*/
update users,users_temp set users.age=users_temp.age where users.id=users_temp.id;

drop table users_temp;

4 使用mysql 自带的语句构建批量更新 [数据控制在1w以内]

update users set age=age+1 where id in (1,2,3);

/**
  建议将修改记录条数控制在1W左右,不要超过2W,否则会耗费的时间也是成倍增加的
 */
update users
set name = case id
    when 1 then '小刚'
    when 2 then '小明'
    when 3 then '小陈'
    else name
end ;

update users
set name = case id
               when 1 then '小刚-1'
               when 2 then '小明-1'
               else name
    end
where id in (1,2,3) ;

总结

到此这篇关于大批量数据用mysql批量更新数据的4种方法总结的文章就介绍到这了,更多相关mysql批量更新数据方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mysql覆盖索引详解

    Mysql覆盖索引详解

    今天小编就为大家分享一篇关于Mysql覆盖索引详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • MySQL 虚拟列和虚拟索引的实现示例

    MySQL 虚拟列和虚拟索引的实现示例

    在MySQL 5.7及更高版本中,虚拟列是一个非常有用的特性,本文主要介绍了MySQL 虚拟列和虚拟索引的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • MySql库与表的基础操作大全

    MySql库与表的基础操作大全

    本文详细讲解了MySQL数据库与表的核心操作,掌握这些基础操作后,可进一步学习MySQL的索引优化、事务管理等高级知识,提升数据库操作的效率与安全性,感兴趣的朋友跟随小编一起看看吧
    2025-10-10
  • 如何合理使用数据库冗余字段的方法

    如何合理使用数据库冗余字段的方法

    今天小编就为大家分享一篇关于如何合理使用数据库冗余字段的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Linux中MySQL 双主复制的配置指南

    Linux中MySQL 双主复制的配置指南

    在数据驱动的时代,数据库的高可用性和数据一致性是每个企业必须考虑的重要问题,MySQL 双主复制提供了一种有效的解决方案,通过配置两台服务器互为主从,保证数据的实时同步和高可用性
    2024-07-07
  • MySQL常用命令 MySQL处理数据库和表的命令

    MySQL常用命令 MySQL处理数据库和表的命令

    这篇文章主要介绍了MySQL常用命令,尤其是针对MySQL处理数据库和表的命令进行学习,特别适用于新手,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • mysql8中如何设置sql-mode

    mysql8中如何设置sql-mode

    这篇文章主要介绍了mysql8中如何设置sql-mode问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • mysql 8.0版本更换用户密码的方法步骤

    mysql 8.0版本更换用户密码的方法步骤

    这篇文章主要给大家介绍了关于mysql 8.0版本更换用户密码的方法步骤,MySQL用户密码的修改是经常面临的一个问题,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • MySQL解决SQL注入的另类方法详解

    MySQL解决SQL注入的另类方法详解

    这篇文章主要介绍了MySQL解决SQL注入的另类方法,结合实例形式列举分析了几种防止SQL注入的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-04-04
  • insert和select结合实现

    insert和select结合实现"插入某字段在数据库中的最大值+1"的方法

    今天小编就为大家分享一篇关于insert和select结合实现"插入某字段在数据库中的最大值+1"的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03

最新评论