Mysql的Replace和ON DUPLICATE KEY UPDATE的用法与作用

转载 2011年01月20日 13:36:00
最近在项目开发中发现经常会遇到这种情况:想要插入一条数据,但是希望如果数据表中已经存在此数据的编号则更新此数据。

 

遇到此种情况我之前是先查询,然后用程序判断是否有结果,如果有则更新此数据,若无则插入新数据。


但是你会发现这样会感觉代码量增加,所以放弃了此种方法。


由于我使用的是MYSQL数据库,没有像ORACLE中的merger方法,所以在网上Google了下,又翻了下手册,终于有了收获,那就是

 

INSERT ... ON DUPLICATE KEY UPDATE语句。

 

INSERT ... ON DUPLICATE KEY UPDATE的作用:插入数据时,如果插入的数据中对应的主键或唯一索引的值在表中已存在,则将此条数据对应的字段值修改。如果不存在则直接插入。

 

INSERT ... ON DUPLICATE KEY UPDATE的用法:

 

insert into test2 select * from test1 on duplicate key update a = 'REMOVE-ME';

 

这样使用后,你只需一行sql语句就能达到刚才的要求。

 

同时我还找到另一个语法:Replace

 

Replace的作用:插入数据时,如果插入的数据中对应的主键或唯一索引的值在表中已存在,则先讲表中的值删除,然后在插入。如果不存在则直接插入

 

Replace的用法:


REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name,...)]

 

{VALUES | VALUE} ({expr | DEFAULT},...),(...),...

 

or:

 

REPLACE [LOW_PRIORITY | DELAYED][INTO] tbl_name  SET col_name={expr | DEFAULT}, ...

 

Or:

 

REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name,...)]SELECT ...

 

Example: REPLACE INTO table_name SELECT * FROM table_name;

 

此语句可以用来做表数据间的复制或其他适合的操作。

相关文章推荐

MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)

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

MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)

案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用:  代码如下 复制代码 1 I...

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

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

MySQL的Replace into 与 Insert into on duplicate key update的不同之处

相同点:(1)没有key的时候,replace与insert .. on deplicate udpate相同。 (2)有key的时候,都保留主键值,并且auto_increment自动+1。不同点...

MySQL的Replace into 与Insert into on duplicate key update真正的不同之处

相同点:(1)没有key的时候,replace与insert .. on deplicate udpate相同。 (2)有key的时候,都保留主键值,并且auto_increment自动+1。不同点...
  • xlxxcc
  • xlxxcc
  • 2016-09-05 16:47
  • 2721

MySql避免"重复插入记录"的方法(INSERT ignore into,Replace into,ON DUPLICATE KEY UPDATE)

案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用: 代码如下 复制代码 1 INSERT IGNORE INTO...

MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)

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

MYSQL的REPLACE和INSERT ... ON DUPLICATE KEY UPDATE

在对看看的后台进行排序的时候,遇到了一个像这样的需求,在电影表中有ID(主键自增)和orderby(排序字段) ,假设有十条数据id分别从1-10之间,对应的orderby也是从1-10之间,我现...

MySQL的Replace into 与Insert into on duplicate key update真正的不同之处

相同点: (1)没有key的时候,replace与insert .. on deplicate udpate相同。  (2)有key的时候,都保留主键值,并且auto_increment自动+...
  • ljj_9
  • ljj_9
  • 2017-05-19 17:39
  • 145

Mysql replace into 与 insert into on duplicate key update 死锁和性能测试

REPLACEINTO 测试           1   编写目的 1.  测试 replace into 引发死锁 2.  测试 replace 和INSET INTO  ***...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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