文档章节

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

码上有春天
 码上有春天
发布于 2015/05/07 16:48
字数 368
阅读 5088
收藏 39
点赞 1
评论 0

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

  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
码字总数 55837
作品 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
关于binlog的幂等性在mysql中的实现思路

因为binlog会有重复拉取的操作,那么如果后端存储是mysql,如何处理 看到微信推了一篇文章,先保存起来 MySQL处理插入过程中的主键唯一键重复值办法 2016-05-05 pursuer.chen 数据库开发 来自...

强子哥哥
2016/05/05
273
0
MySQL插入多条记录和REPLACE语句

今天遇到样一个问题,在使用Mysql数据库时,新建一个表,并设置主键为自增长,结果当我一次执行多条插入语句时悲剧了,它竟然报错了,信息如下: 错误码: 1064You have an error in your SQL...

学习的小猪
06/26
0
0
「mysql优化专题」90%程序员都会忽略的增删改优化(2)

前文一篇「mysql优化专题」这大概是一篇最好的mysql优化入门文章(1)让大家知道msql优化,究竟在优化什么,本篇为mysql优化专题的第二篇,主要先从增删改进行优化。大家可以收藏关注一波,若...

java进阶架构师
2017/11/22
0
0
MYSQL无重复插入数据更新语法&sql一句话使insert时若主键重复则更新

我来说两句 收藏 我要投稿 MYSQL无重复插入数据更新语法&sql一句话使insert时若主键重复则更新 如果你指定了ON DUPLICATE KEY UPDATE命令语句,那么在唯一索引或者主索引的作用下将不插入与数...

碧海潮生曲
2013/03/02
0
0
MYSQL 无重复插入数据更新语法 sql一句话使insert时若主键重复则更新

如果你指定了ON DUPLICATE KEY UPDATE命令语句,那么在唯一索引或者主索引的作用下将不插入与数据库记录重复的内容,但同时会更新数据库中的旧记录。例如,字段a被声明为唯一索引并且里面只包...

idea_biu
2012/07/02
0
0
mysql存在则更新,不存在则插入

INSERT INTO ON DUPLICATE KEY UPDATE 与 REPLACE INTO,两个命令可以处理重复键值问题,在实际上它之间有什么区别呢? 前提条件是这个表必须有一个唯一索引或主键。 unique 1、REPLACE发现重...

LCZ777
2015/09/22
4.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

TensorFlow 作用域与操作符的受限范围

variable_scope 影响变量和操作符 name_scope 只影响操作符 with tf.name_scope(""),使用空字符串将作用域返回到顶层 tf.variable_scope("") 相当于添加一个空层 import tensorflow as tf...

阿豪boy
11分钟前
0
0
Java面试基础篇——第六篇:常见Map类的区别

常见的map类有: HashMap, ConcurrentHashMap (Jdk1.8) , LinkedHashMap, TreeMap, Hashtable。 其中我们最常用的莫过于HashMap, 和并发情况下使用的ConcurrentHashMap了,它们的主要区别就在...

developlee的潇洒人生
12分钟前
0
0
崛起于Springboot2.X之前端模版freemaker(23)

1、配置文件 spring: freemarker: allow-request-override: false cache: true check-template-location: true charset: UTF-8 content-type: text/html ......

木九天
29分钟前
1
0
spring-boot:run启动时,指定spring.profiles.active

Maven启动指定Profile通过-P,如mvn spring-boot:run -Ptest,但这是Maven的Profile。 如果要指定spring-boot的spring.profiles.active,则必须使用mvn spring-boot:run -Drun.profiles=test......

夜黑人模糊灬
31分钟前
0
0
大数据分析挖掘技术学习:Python文本分类

引言 文本分类作为自然语言处理任务之一,被广泛应用于解决各种商业领域的问题。文本分类的目的是将 文本/文档 自动地归类为一种或多种预定义的类别。常见的文本分类应用如下: • 理解社交媒...

加米谷大数据
35分钟前
0
0
istio-0.8 指标监控,prometheus,grafana

配置: https://istio.io/docs/tasks/telemetry/metrics-logs/ https://istio.io/docs/tasks/telemetry/tcp-metrics/ envoy拦截请求>上报mixer>对接prometheus>grafana 效果截图: promethe......

xiaomin0322
37分钟前
0
0
公众号推荐

阿里技术 书籍:《不止代码》

courtzjl
40分钟前
0
0
关于改进工作效率

1.给不同的业务线建立需求群,所有的数据需求都在群里面提。 2.对于特别难搞定的事情,到对应的技术哪去做,有问题随时沟通。 3.定期给工作总结形成方法论。 4.学习新的技术,尝试用新的方法...

Avner
47分钟前
0
0
关于thinkphp 框架开启路径重写,无法获取Authorization Header

今天遇到在thinkphp框架中获取不到header头里边的 Authorization ,后来在.htaccess里面加多一项解决,记录下: <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews Rewrite......

殘留回憶
51分钟前
0
0
centos 使用yum安装nginx后如何添加模块 10

centos 使用yum安装nginx后如何添加模块 10 centos6.2版本,使用yum来安装了nginx,但是最近需要重新添加模块,所以就傻了,询问下有人知道怎么重新添加模块吗? PS:俺是新手,需要高手救助...

linjin200
54分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部