最近在完成MySql项目集成的情况下,需要增加批量更新的功能,根据网上的资料整理了一下,很好用,都测试过,可以直接使用。

mysql 批量更新共有以下四种办法

1、.replace into 批量更新

   replace into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y');
   例子:replace into book (`Id`,`Author`,`CreatedTime`,`UpdatedTime`) values (1,'张飞','2016-12-12 12:20','2016-12-12 12:20'),(2,'关羽','2016-12-12 12:20','2016-12-12 12:20');

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

  insert into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y') on duplicate key update dr=values(dr);

例子:insert into book (`Id`,`Author`,`CreatedTime`,`UpdatedTime`) values (1,'张飞2','2017-12-12 12:20','2017-12-12 12:20'),(2,'关羽2','2017-12-12 12:20','2017-12-12 12:20') on duplicate key update Author=values(Author),CreatedTime=values(CreatedTime),UpdatedTime=values(UpdatedTime);

replace into  和 insert into on duplicate key update的不同在于:

replace into 操作本质是对重复的记录先delete 后insert,如果更新的字段不全会将缺失的字段置为缺省值,用这个要悠着点否则不小心清空大量数据可不是闹着玩的。
    insert into 则是只update重复记录,不会改变其它字段。

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

create temporary table tmp(id int(4) primary key,dr varchar(50));
    insert into tmp values  (0,'gone'), (1,'xx'),...(m,'yy');
    update test_tbl, tmp set test_tbl.dr=tmp.dr where test_tbl.id=tmp.id;

注意:这种方法需要用户有temporary 表的create 权限。

4、使用mysql 自带的语句构建批量更新

mysql 实现批量 可以用点小技巧来实现:

UPDATE yoiurtable
        SET dingdan = CASE id
            WHEN 1 THEN 3
            WHEN 2 THEN 4
            WHEN 3 THEN 5
        END
    WHERE id IN (1,2,3)

这句sql 的意思是,更新dingdan 字段,如果id=1 则dingdan 的值为3,如果id=2 则dingdan 的值为4……
    where部分不影响代码的执行,但是会提高sql执行的效率。确保sql语句仅执行需要修改的行数,这里只有3条数据进行更新,而where子句确保只有3行数据执行。

例子:UPDATE book
        SET Author = CASE id
            WHEN 1 THEN '黄飞鸿'
            WHEN 2 THEN '方世玉'
            WHEN 3 THEN '洪熙官'
        END
    WHERE id IN (1,2,3)

如果更新多个值的话,只需要稍加修改:

UPDATE categories      
        SET dingdan = 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 book
        SET Author = CASE id
            WHEN 1 THEN '黄飞鸿2'
            WHEN 2 THEN '方世玉2'
            WHEN 3 THEN '洪熙官2'
        END,
        Code = CASE id
            WHEN 1 THEN 'HFH2'
            WHEN 2 THEN 'FSY2'
            WHEN 3 THEN 'HXG2'
        END
    WHERE id IN (1,2,3)

到这里,已经完成一条mysql语句更新多条记录了。

好了,很有用,记录下来,具体的Book的表结构不写了,大家可以建立自己的表结构,字段改成自己的字段就可以了。MySql是挺好用的。

转载于:https://www.cnblogs.com/PatrickLiu/p/6385167.html

MySql中4种批量更新的方法相关推荐

  1. mysql begin end 批量更新_MySql中4种批量更新的方法

    1.replace into 批量更新 replace into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y');例: replace into ...

  2. mysql update批量更新_MySql中4种批量更新的方法

    mysql 批量更新共有以下四种办法 1..replace into 批量更新 replace into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,' ...

  3. mysql update多条件批量更新_Mybatis中进行批量更新(updateBatch)

    更新多条数据,每条数据都不一样 背景描述:通常如果需要一次更新多条数据有两个方式,(1)在业务代码中循环遍历逐条更新.(2)一次性更新所有数据(更准确的说是一条sql语句来更新所有数据,逐条更新的操作 ...

  4. mybatis批量更新 mysql 报错,Mybatis批量更新报错问题

    下面给大家介绍mybatis批量更新报错问题, allowMultiQueries=true 后来发现是jdbc链接没有加允许批量更新操作的参数引起的,不加会报badsql,mysql版的mybati ...

  5. 怎样把计算机里的图片快速删除,如何批量删除重复图片 电脑中相同图片批量删除的方法...

    因为工作需要,在电脑上存了大量的图片,有些是从网站上批量下载的,这里面难免会有许多重复的,如果数量少的话,一张张地看,再一张张的删除重复图片那还行得通.可是当你一个文件夹里就有几千上万张的图片时,再用 ...

  6. cmd下无法启动MySQL的几种原因及解决方法

    cmd下无法启动MySQL的几种原因及解决方法 1.cmd下输入net start mysql无法启动MySQL服务 原因一:管理员权限不足 解决方法:以管理员身份运行cmd再次输入命令 原因二:My ...

  7. mysql数据库中count的作用_详解 MySQL中count函数的正确使用方法

    1. 描述 在MySQL中,当我们需要获取某张表中的总行数时,一般会选择使用下面的语句 select count(*) from table; 其实count函数中除了*还可以放其他参数,比如常数.主 ...

  8. tomcat中三种部署项目的方法(转)

    tomcat中三种部署项目的方法 第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:  <Context path="/h ...

  9. QT中三种构建菜单栏的方法

    QT中三种构建菜单栏的方法 方法1 <C++ GUI programming with Qt 4, Second Edition>给出的一种方法:QMenum定义单个菜单,调用menuBa ...

最新文章

  1. 【PB开发】第2天: 应用创建及窗体配置
  2. JavaScript中Object.prototype.toString方法的原理
  3. 中国高炉煤气脉冲袋式除尘器市场需求分析与竞争战略规划研究报告2022-2028年版
  4. 苹果app商品定价_App Store 即将进行价格调整
  5. leetcode 剑指 Offer 05. 替换空格
  6. 论文浅尝 | 近期论文精选
  7. 【C语言笔记进阶篇】第一章:指针进阶
  8. C++网易云课堂开发工程师--转换函数
  9. C#鼠标点击器-没有测试-转自http://hi.baidu.com/syq_ghost/item/2cc253eb538b72e7fb42ba44
  10. jquery.zclip轻量级复制失效问题
  11. java商城源码_盘点这些年被黑的最惨的语言,Java瑟瑟发抖
  12. 语音处理的分帧,帧移,加窗,滤波,降噪,合成
  13. 【知识必备】RxJava+Retrofit二次封装最佳结合体验,打造懒人封装框架~
  14. 主干分支开发模式_源代码主干分支开发四大模式
  15. 如何在企业微信中打通私域闭环?
  16. 【C】 求3个正整数的最小公倍数
  17. 中基协:推荐使用电子合同
  18. Spring问题研究之bean的属性xml注入List类型不匹配
  19. IT工程师为什么女生少?
  20. python列表转字典

热门文章

  1. Rational Rose 下载安装
  2. Windows7优化开机、关机速度的方法
  3. 启动器中图标的默认路径
  4. 集群状态正常时需要的jps进程+是否需要部署到各个节点(持续更新中)
  5. spark-shell连接数据库java.sql.SQLSyntaxErrorException: Unknown databas
  6. numpy.matrixlib.defmatrix.matrix写入csv文件
  7. ubuntu16.04登录mysql出现1045的报错或者2002报错
  8. args和kwargs以及argv用法
  9. Connected to an idle instance问题的小小仇恨
  10. iOS 11.4.1 正式版越狱