【MySQL】ON DUPLICATE KEY UPDATE

之前没用过这个操作,甚至没见过……最近接触到,而且还挺有用。

作用:若 KEY 不重复,则插入记录;否则更新记录。

  • 单条操作:
INSERT INTO table(a, b, c)
VALUES (1,2,3)
ON DUPLICATE KEY
UPDATE c=c+1;
  • 批量操作:
INSERT INTO database.table (id, key, field)
VALUES (v1, v2, v3), (v1, v2, v3), (v1, v2, v3)
ON DUPLICATE KEY UPDATE
id=VALUES(id), key=VALUES(key), field=VALUES(field);

参考链接:

  1. https://blog.csdn.net/BuptZhengChaoJie/article/details/50992923
  2. https://blog.zhengxianjun.com/2017/06/mysql-batch-insert-update/

原文地址:https://www.cnblogs.com/jaxer/p/9676031.html

时间: 2024-10-08 16:46:41

【MySQL】ON DUPLICATE KEY UPDATE的相关文章

MySQL中ON DUPLICATE KEY UPDATE使用

今天做推断插入用到了MySQL中ON DUPLICATE KEY UPDATE,如今Mark下面! 假设你想做到数据库中没有数据的话插入数据.有数据的话更新数据,那么你能够选择ON DUPLICATE KEY UPDATE. ON DUPLICATE KEY UPDATE可以在UNIQUE索引或PRIMARY KEY存在的情况下对旧行运行UPDATE操作. 比如:假设列a被定义为UNIQUE,而且包括值1,则下面两个语句具有同样的效果: INSERT INTO table (a,b,c) VAL

关于使用MySQL语法ON DUPLICATE KEY UPDATE单个增加更新及批量增加更新的sql

应用场景: 在实际应用中,经常碰到导入数据的功能,当导入的数据不存在时则进行添加,有修改时则进行更新, 在刚碰到的时候,第一反应是将其实现分为两块,分别是判断增加,判断更新,后来发现在mysql中有ON DUPLICATE KEY UPDATE一步就可以完成,感觉实在是太方便了, 该语句是基于唯一索引或主键使用,比如一个字段a被加上了unique index,并且表中已经存在了一条记录值为1. 比如: 下面两个语句会有相同的效果: INSERT INTO table (a,b,c) VALUES

MySQL INSERT ON DUPLICATE KEY UPDATE

来源:https://www.mysqltutorial.org/mysql-insert-or-update-on-duplicate-key-update/ Introduction to the MySQL INSERT ON DUPLICATE KEY UPDATE statement The INSERT ON DUPLICATE KEY UPDATE is a MySQL's extension to the SQL standard's INSERT statement. When

MySql之on duplicate key update详解

在我们的日常开发中,你是否遇到过这种情景:查看某条记录是否存在,不存在的话创建一条新记录,存在的话更新某些字段.你的处理方式是不是就是按照下面这样? $result = mysql_query('select * from xxx where id = 1'); $row = mysql_fetch_assoc($result); if($row){ mysql_query('update ...'); }else{ mysql_query('insert ...'); } 这样的写法可能有如下

MySQL使用on duplicate key update时导致主键不连续自增

使用on duplicate key update语法有时是很方便,但是会有一个影响:默认情况下,每次更新都会更新该表的自增主键ID,如果更新频率很快,会导致主键ID自增的很快,过段时间就超过数字类型的的范围了解决这个问题,有两种方式:(实际目前的方式就是把自增主键ID设置为bigint,也有一部分操作先查询再选择插入OR更新)方法一:拆分成两个动作,先查询,再更新方法二:修改innodb_autoinc_lock_mode参数(不推荐)  innodb_autoinc_lock_mode中有3

mysql:on duplicate key update与replace into

在往表里面插入数据的时候,经常需要:a.先判断数据是否存在于库里面:b.不存在则插入:c.存在则更新 一.replace into 前提:数据库里面必须有主键或唯一索引,不然replace into 会直接插入新数据,导致数据表里面有重复数据 执行时先尝试插入数据: a.当数据表里面存在(通过主键或唯一索引来判断)该数据,则先将表里的数据删除,再插入新的数据 b.如果数据表里面不存在该数据,则直接插入数据 replace into是insert into的增强版,语法跟insert iton差不

MySql避免重复插入记录方法(ignore,Replace,on duplicate key update,not exist)

在MySQL中进行条件插入数据时,可能会用到以下语句,现小结一下.我们先建一个简单的表来作为测试: CREATE TABLE `books` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(200) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `NewIndex1` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 1.insert ignore int

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

原文链接:http://www.jb51.net/article/47090.htm 今天听同事介绍oracle到mysql的数据migration,他用了Insert into ..... on duplicate key update ...,我当时就想怎么不用Replace呢,于是回来就仔细查了下,它们果然还是有区别的 看下面的例子吧: 1 Replace into ... 1.1 录入原始数据 mysql> use test; Database changed mysql>  mysq

MySQL "ON DUPLICATE KEY UPDATE" 使用

一.insert or update需求 需求:如果test_table中存在记录则update,不存在则insert. 二.老做法:3条sql select * from test_table where id = 1;   //查询表中是否已有记录 insert into test_table (id,name) values(1,'may');   //记录不存在,执行insert update test_table set name = 'may' where id = 1;  //记录