文档章节

insert ignore 和DUPLICATE KEY UPDATE 和 LAST_INSERT_ID(id) 赏析

郭恩洲_OSC博客
 郭恩洲_OSC博客
发布于 2017/09/12 13:25
字数 546
阅读 63
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

 SQL解析:今天在阅读openfalcon的query组件代码,对代码中一句SQL赏析。

Sql: insert ignore into tmp_graph (endpoints, counters, ck) values(?, ?, ?) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id),time_=?
Sql: SELECT LAST_INSERT_ID()

Sql: insert ignore into tmp_graph (endpoints, counters, ck) values(?, ?, ?) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id),time_=?
Sql: SELECT LAST_INSERT_ID()

【insert ignore】:如果中已经存在相同的记录,则忽略当前新数据;

【DUPLICATE KEY UPDATE】:如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行

【LAST_INSERT_ID(id)】:获取刚插入的数据主键ID

 

INSERT IGNORE 与INSERT INTO的区别

INSERT IGNORE 与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在 的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。

eg: insert ignore into table(name)  select  name from table2 

 

mysql中常用的三种插入数据的语句:


insert into表示插入数据,数据库会检查主键(PrimaryKey),如果出现重复会报错;


replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引的话,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样;
REPLACE语句会返回一个数,来指示受影响的行的数目。该数是被删除和被插入的行数的和。如果对于一个单行REPLACE该数为1,则一行被插入,同时没有行被删除。如果该数大于1,则在新行被插入前,有一个或多个旧行被删除。如果表包含多个唯一索引,并且新行复制了在不同的唯一索引中的不同旧行的值,则有可能是一个单一行替换了多个旧行。
 
insert ignore表示,如果中已经存在相同的记录,则忽略当前新数据;

© 著作权归作者所有

郭恩洲_OSC博客
粉丝 37
博文 258
码字总数 126065
作品 0
徐汇
高级程序员
私信 提问
加载中

评论(0)

mysql插入数据时 insert IGNORE、ON DUPLICATE KEY UPDATE、replace into

转: mysql insert时几个操作DELAYED 、IGNORE、ON DUPLICATE KEY UPDATE的区别博客分类: mysql基础应用 mysql insert时几个操作DELAYED 、IGNORE、ON DUPLICATE KEY UPDATE的区别 zccst整理...

osc_cesboqi4
2019/08/21
4
0
MYSQL无重复插入数据更新语法&sql一句话使insert时若主键重复则更新

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

碧海潮生曲
2013/03/02
468
0
Mysql避免重复插入记录方法

一、mysql replace用法 1.replace into replace into table (id,name)values('1','aa'),('2','bb') 此语句的作用是向表table中插入两条记录。如果主键id为1或2不存在 就相当于 insert into ......

osc_evi50j4g
2018/07/28
2
0
转载:避免重复插入,更新的sql

本文章来给大家提供三种在mysql中避免重复插入记录方法,主要是讲到了ignore,Replace,ON DUPLICATE KEY UPDATE三种方法,各位同学可尝试参考。 案一:使用ignore关键字 如果是用主键primary...

osc_cjaxjtx8
2018/01/23
2
0
关于binlog的幂等性在mysql中的实现思路

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

强子哥哥
2016/05/05
727
0

没有更多内容

加载失败,请刷新页面

加载更多

适合小白的Demo_easyui+core3第四章登录

1、先新建个base控制器,作为一个顶层,其他控制器都会集成与baseController base用于获取登录信息的记录 public class baseController : Controller {   public loginlog getbase() {   ...

osc_idh31hqp
6分钟前
8
0
Visual Studio之代码清理(一)

vs2017的格式设置对应vs2019的代码清理: vs2019: 执行代码清理时,可以点击那个扫把小图片,会按照默认的第一种配置文件来自动修复。也可以点击下拉三角符合,选择不同的配置文件,然后进行...

osc_sd3vf5bk
7分钟前
5
0
适合小白的Demo_easyui+core3第四章用户登录

1、添加用户列表控制器,用于用户列表显示,登录,增删改查,邮件发送,下载 public userlistController(MainDbContext _db, ILogger<operatorlog> _logger, IOptions<email> sendMail) {  ......

osc_l4ynn973
9分钟前
11
0
游戏音乐制作中,编曲和作曲的区别

在游戏音乐制作中,不仅有作曲、还有音乐编曲,那么什么是作曲、什么是编曲呢?作曲和编曲到底有什么作用?今天 游戏音乐制作小编一起来和大家聊聊。 游戏作曲,从无到有创作出一段乐曲,这部...

奇亿音乐
9分钟前
10
0
在手机上怎么将图片生成PDF?超实用的文字识别软件!

在手机上怎么将图片生成PDF?在电脑上我们可以通过PDF相关的一些软件将图片转换成PDF文档,但是在手机中要想将图片生成PDF文档就难得多了。今天小编就给大家带来能够将图片迅速生成PDF的一款...

dawda
10分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部