文档章节

mysql妙用:批量插入记录,遇到重复记录则为自动更新

码上有春天
 码上有春天
发布于 2015/05/07 16:48
字数 368
阅读 5373
收藏 39

在更新大量数据时可能同时遇到两个问题:

  1. 如果每条更新执行一次sql性能很低,也容易造成阻塞;

  2. 批量更新时又有可能遇到主键重复的问题

使用 ON DUPLICATE KEY UPDATE 一条sql解决批量更新和主键重复问题(id为主键)

INSERT INTO mytable(id,pid,ele,anim) 
VALUES (?,?,?,?),(?,?,?,?),(?,?,?,?)
ON DUPLICATE KEY UPDATE pid=VALUES(pid),ele=VALUES(ele)
//pid=VALUES(pid),ele=VALUES(ele) 表示出现在values中某列的id字段值与表中已有id字段值重复时,会更新对应记录的这两个字段

//还可以指定其它值或进行运算:pid=pid+1,ele=ele-1

//因为这里未指定列 anim,所以遇到重复id的列,表中该列的 anim字段不会更新

//如果某列作为新记录被插入,则受影响行的值为1;如果表中原有的记录被更新,则受影响行的值为2

它不但对唯一主键有效,对复合主键同样有效,复合主键设置:

ALTER TABLE mytable ADD(CONSTRAINT PRIMARY KEY(id,pid));

不过ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法,不要乱用哦

© 著作权归作者所有

共有 人打赏支持
码上有春天
粉丝 5
博文 82
码字总数 55905
作品 0
广州
程序员
私信 提问
MySQL基础、管理、高级、用法、架构、优化好文章收集

基础 管理 高级 1、mysql分区技术 http://my.oschina.net/liting/blog/465149 2、mysql 外键(foreign key)的详解和实例 用法 1、mysql实现用拼音搜索中文的数据库实现 http://my.oschina....

tomener
2016/04/25
149
0
MySQL当批量插入遇上唯一索引

一、背景 以前使用SQL Server进行表分区的时候就碰到很多关于唯一索引的问题:Step8:SQL Server 当表分区遇上唯一约束,没想到在MySQL的分区中一样会遇到这样的问题:MySQL表分区实战。 今天...

雍雍_yoyo
2013/12/26
0
0
Mysql中Insert into xxx on duplicate key update问题

一,on duplicate key update 在看代码的过程中碰到了这一用法,不太理解,google了一下。它的意义其实是如果在insert语句末尾制定了on duplicate key update语句的话,则当插入行会导致一个...

君满楼001
2017/11/19
0
0
Mysql replace 与 insert on duplicate效率分析

我们在向数据库里批量插入数据的时候,会遇到要将原有主键或者unique索引所在记录更新的情况,而如果没有主键或者unique索引冲突的时候,直接执行插入操作。 这种情况下,有三种方式执行: ...

不停息的脚步
2015/07/23
0
0
mysql 插入数据 重复行处理

mysql 处理数据库中的重复行 1、对于主键和唯一索引,可以用IGNORE关键字,遇到重复记录会直接忽略插入记录,返回0。 insert ignore into table_name ('id','name') values (1,'eddy') 2、r......

glen_xu
2018/09/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot2.0 rabbitmq

AmqpTemplate接口没有参数说明,不知道传啥参数,这是很难受,不知道怎么看参数的定义.... 1、先来添加引用包 <dependency> <groupId>org.springframework.boot</groupId> <artifa......

朝如青丝暮成雪
3分钟前
0
0
replace File.separator出现异常:【java.lang.IllegalArgumentException: character to be escaped is missing】

写代码时,要写这么一个功能:将包名中的"."换成路径分隔符("/"或"",视操作系统而定),要求在window或linux下都能正常运行。 分析一下,这明显是个字符串替换的操作,可用使用String提供的...

Funcy1122
4分钟前
0
0
centos7下查找项目路径

1、查出tomcat的端口(如已知端口请忽略,其实用该命令也可以查出tomcat的位置,项目太多,不想找的话,就用下面的步骤吧。) ps -aux | grep tomcat 2、根据端口号查询进程,并获取进程ID ...

You_are_my_music
6分钟前
0
0
微信小程序与原生的App(iOS、Android)的优势对比

小程序也属于App的一种,那么它和我们现在流行的原生App(IOS、Android)相比,有什么区别和优势呢? 一、区别与优势 首先,从技术上来讲,目前App的主流开发方式有三种:Web App 、Native ...

Mr_ET
9分钟前
0
0
第二篇:SpringBoot接口Http协议

1、SpringBoot HTTP请求配置 简介:SpringBoot2.xHTTP请求注解讲解和简化注解配置技巧 1、@RestController and @RequestMapping是springMVC的注解,不是springboot特有的 2、@RestController...

嘴角轻扬30
9分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部