mysql"ON DUPLICATE KEY UPDATE"语法简析

转载 2013年12月02日 13:33:03
如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;
如果不会导致唯一值列重复的问题,则插入新行。  www.2cto.com   
 
例如,如果列 a 为 主键 或 拥有UNIQUE索引,并且包含值1,则以下两个语句具有相同的效果: 
1
INSERT INTO TABLE (a,c) VALUES (1,3) ON DUPLICATE KEY UPDATE c=c+1;
2
UPDATE TABLE SET c=c+1 WHERE a=1;
 
如果行作为新记录被插入,则受影响行的值显示1;如果原有的记录被更新,则受影响行的值显示2。 
这个语法还可以这样用: 
 
如果INSERT多行记录(假设 a 为主键或 a 是一个 UNIQUE索引列): 
1
1.INSERT INTO TABLE (a,c) VALUES (1,3),(1,7) ON DUPLICATE KEY UPDATE c=c+1;
执行后, c 的值会变为 4 (第二条与第一条重复, c 在原值上+1). 
1  www.2cto.com  
2.INSERT INTO TABLE (a,c) VALUES (1,3),(1,7) ON DUPLICATE KEY UPDATE c=VALUES(c);
 
执行后, c 的值会变为 7 (第二条与第一条重复, c 在直接取重复的值7). 
 
注意:ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法! 
这个语法和适合用在需要 判断记录是否存在,不存在则插入存在则更新的场景.

相关文章推荐

深入mysql "ON DUPLICATE KEY UPDATE" 语法的分析

原文:http://www.jb51.net/article/39255.htm 本篇文章是对mysql "ON DUPLICATE KEY UPDATE"语法进行了详细的分析介绍,需要的朋...

mysql INSERT ... ON DUPLICATE KEY UPDATE

向数据库插入记录时,有时会有这种需求,当符合某种条件的数据存在时,去修改它,不存在时,则新增,也就是saveOrUpdate操作。这种控制可以放在业务层,也可以放在数据库层,大多数数据库都支持这种需求...

mysql重复插入insert时更新ON DUPLICATE KEY UPDATE

mysql当插入重复时更新的方法: 第一种方法:示例一:插入多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的语句:INSERT INTO clients ...

MySQL_插入更新 ON DUPLICATE KEY UPDATE

平时我们在设计数据库表的时候总会设计 unique  或者 给表加上 primary key 的限制条件. 此时 插入数据的时候 ,经常会有这样的情况: 我们想向数据库插入一条记录:   若数据表...

Mysql 并发引起的死锁问题(INSERT ... ON DUPLICATE KEY UPDATE 死锁)

背景: 平台的某个数据库上面有近千个连接,每个连接对应一个爬虫,爬虫将爬来的数据放到cdb里供后期分析查询使用。前段时间经常出现cdb查询缓慢,cpu占有率高的现象。通过show proce...

MYSQL之REPLACE INTO和INSERT … ON DUPLICATE KEY UPDATE用法

REPLACE INTO的用法与INSERT很相似,最终在表中的目的是插入一行新的数据。不同的是,当插入时出现主键或者唯一索引冲突的时候,会删除原有记录,重新插入新的记录。因此,除非表具有主键或者唯一...

MySQL的ON DUPLICATE KEY UPDATE 使用

因工作需要,需要实现如下业务功能: 给定日期范围(开始日期~结束日期),批量将该范围内的日期,按照天把价格存储(insert or update)到数据库(MySQL)中;简化考虑,采用触发器实现; ...

MySql 的ON DUPLICATE KEY UPDATE函数(有记录就更新,没记录就插入)

这个函数的主要作用就是当数据库中有该记录时,就执行update,如果没有就执行insert函数(主要还是利用索引啊主键等的唯一性来判断是插入还是更新,将两步化为一步)!!! 如果指定了ON DUPL...

Mysql ON DUPLICATE KEY UPDATE 用法

如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不...
  • thjnemo
  • thjnemo
  • 2015年03月03日 14:50
  • 369

mysql insert的几点操作(DELAYED 、IGNORE、ON DUPLICATE KEY UPDATE )

INSERT语法 INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]        [INTO] tbl_name [(col_nam...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql"ON DUPLICATE KEY UPDATE"语法简析
举报原因:
原因补充:

(最多只允许输入30个字)