大批量数据用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 ERROR 1045 (28000): Access denied for user ''root''@''localhost'' (using password: NO) 的原因分解决办法

    MySQL ERROR 1045 (28000): Access denied for user ''root''@''

    这篇文章主要介绍了MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 的原因分解决办法的相关资料,需要的朋友可以参考下
    2016-05-05
  • 浅谈一下MyISAM和InnoDB存储引擎的区别

    浅谈一下MyISAM和InnoDB存储引擎的区别

    这篇文章主要介绍了MyISAM和InnoDB存储引擎的区别,存储引擎是MySQL中特有的一个术语,其它数据库中没有,实际上存储引擎是一个表存储/组织数据的方式,今天就跟小编来看看MyISAM和InnoDB存储引擎的区别,需要的朋友可以参考下
    2023-04-04
  • mysql表优化、分析、检查和修复的方法详解

    mysql表优化、分析、检查和修复的方法详解

    这篇文章主要介绍了mysql表优化、分析、检查和修复的方法,结合实例形式较为详细的分析了MySQL表进行优化,分析与修复等操作的各种常见命令与使用技巧,需要的朋友可以参考下
    2016-04-04
  • Linux下mysql的root密码修改方法

    Linux下mysql的root密码修改方法

    mysql是我们经常在linux或者windows需要用的一种数据库,相信每位程序员们对mysql应该都再熟悉不过了,但是有时大脑短路,突然忘记mysql的超级用户root的密码,这个时候就要修改个新的密码了,下面这篇文章就介绍了Linux下mysql的root密码修改方法,一起来看看吧。
    2017-03-03
  • MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解

    MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解

    在MySQL中可以使用IF()、IFNULL()、NULLIF()、ISNULL()函数进行流程的控制。本文就详细的介绍这几种方法,感兴趣的可以了解一下
    2021-06-06
  • MySQL 元数据锁及问题排查的解决

    MySQL 元数据锁及问题排查的解决

    MySQL中的元数据锁主要用于管理并发操作下的数据字典一致性,本文主要介绍了MySQL 元数据锁及问题排查的解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-09-09
  • centOS7安装MySQL数据库

    centOS7安装MySQL数据库

    本文给大家简单介绍了如何在centOS7下安装MySQL5.6数据库的方法,以及一些注意事项,希望对大家实用mysql能够有所帮助
    2016-12-12
  • MySQL 句柄数占用过多的解决方法

    MySQL 句柄数占用过多的解决方法

    本文主要介绍解决MySQL句柄占用过多的方法,简单实用,需要的朋友可以参考下。
    2016-05-05
  • 如何通过sql查找所有父节点和所有子节点(以mysql为例)

    如何通过sql查找所有父节点和所有子节点(以mysql为例)

    这篇文章主要给大家介绍了关于如何通过sql查找所有父节点和所有子节点,本文以mysql为例,项目中遇到一个需求,要求查处菜单节点的所有节点,这里给大家总结下,需要的朋友可以参考下
    2023-08-08
  • MySql 5.7.17 winx64的安装配置详细教程

    MySql 5.7.17 winx64的安装配置详细教程

    这篇文章主要介绍了MySql 5.7.17 winx64的安装配置教程,初始化数据库、配置相关信息的方法在本文中介绍的非常详细,需要的朋友参考下
    2017-01-01

最新评论