大批量数据用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分区表学习之日期分区的相关资料,分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表,需要的朋友可以参考下
    2023-08-08
  • linux下使用RPM安装mysql5.7.17

    linux下使用RPM安装mysql5.7.17

    这篇文章主要为大家详细介绍了linux下使用RPM安装mysql5.7.17的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • MySQL子查询操作实例详解

    MySQL子查询操作实例详解

    这篇文章主要介绍了MySQL子查询操作,结合实例形式较为详细的分析了mysql表的创建、常见子查询运算与关键字使用技巧,需要的朋友可以参考下
    2018-06-06
  • MySQL表的重命名字段添加及字段属性修改操作语法

    MySQL表的重命名字段添加及字段属性修改操作语法

    这篇文章主要为大家介绍了MySQL表的重命名字段添加及字段属性修改语法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法

    mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET

    这篇文章主要介绍了mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法,结合实例形式较为详细的分析了mysql存储过程创建、调用及变量创建、赋值具体原理、操作技巧与相关注意事项,需要的朋友可以参考下
    2019-12-12
  • CentOS 7中安装mysql server的步骤分享

    CentOS 7中安装mysql server的步骤分享

    这篇文章主要介绍了CentOS 7中安装mysql server的步骤分享,需要的朋友可以参考下
    2015-09-09
  • MySQL单表百万数据记录分页性能优化技巧

    MySQL单表百万数据记录分页性能优化技巧

    自己的一个网站,由于单表的数据记录高达了一百万条,造成数据访问很慢,Google分析的后台经常报告超时,尤其是页码大的页面更是慢的不行
    2016-08-08
  • MySQL指令进行分页显示的使用示例

    MySQL指令进行分页显示的使用示例

    本文主要介绍了MySQL指令进行分页显示的使用示例,主要使用LIMIT命令来实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • 详细解读MySQL的触发器trigger

    详细解读MySQL的触发器trigger

    触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATE和DELETE语句。如果定义了触发程序,当数据库执行这些语句的时候就会激发触发器执行相应的操作,需要的朋友可以参考下
    2023-05-05
  • mysql如何删除数据表和关联的数据表删除详情

    mysql如何删除数据表和关联的数据表删除详情

    这篇文章主要介绍了mysql如何删除数据表和关联的数据表删除详情,删除数据表的时候,表的定义和表中所有的数据均会被删除。因此,在进行删除操作前,最好对表中的数据做一个备份,以免造成无法挽回的后果
    2022-07-07

最新评论