MySQL插入更新_ON DUPLICATE KEY UPDATE】的更多相关文章

前提:操作的表具有主键或唯一索引 INSERT INTO:表中不存在对应的记录,则插入:若存在对应的记录,则报错: INSERT INTO IGNORE:表中不存在对应的记录,则插入:若存在对应的记录,则忽略,不进行任何操作 REPLACE INTO:表中不存在对应的记录,则插入:若存在对应的记录,则删除原有的记录,再 插入新的记录. ON DUPLICATE KEY UPDATE(on duplicate key update)的功能类似于REPLACE INTO: 若表中不存在数据(没有待插…
平时我们在设计数据库表的时候总会设计 unique  或者 给表加上 primary key 的限制条件. 此时 插入数据的时候 ,经常会有这样的情况: 我们想向数据库插入一条记录: 若数据表中存在以相同主键的记录,我们就更新该条记录. 否则就插入一条新的记录. 逻辑上我们需要怎么写: $result = mysql_query('select * from xxx where id = 1'); $row = mysql_fetch_assoc($result); if($row){ mysq…
转: Mysql中INSERT ... ON DUPLICATE KEY UPDATE的实践 阿里加多 0.1 2018.03.23 17:19* 字数 492 阅读 2613评论 2喜欢 1 一.前言 在日常业务开发中经常有这样一个场景,首先创建一条记录,然后插入到数据库:如果数据库已经存在同一主键的记录,则执行update操作,如果不存在,则执行insert操作: 这个操作可以在业务层做,也可以在数据库层面做: 业务层一般做法是先查询,如果不存在在插入,如果存在则更新,但是查询和插入不是原子…
mysql "ON DUPLICATE KEY UPDATE" 语法如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE:如果不会导致唯一值列重复的问题,则插入新行. 例如,如果列 a 为 主键 或 拥有UNIQUE索引,并且包含值1,则以下两个语句具有相同的效果: INSERT INTO TABLE (a,c) VALUES (1,3) ON D…
#下面建立game表,设置name值为唯一索引. CREATE TABLE `game` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) CHARACTER SET utf8 NOT NULL, `type_id` tinyint(4) NOT NULL DEFAULT '0', `attr` varchar(20) NOT NULL, `type_extends` varchar(20) NOT NULL, PRIMARY…
在MySQL数据库中,如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句,而要插入的行与表中现有记录的惟一索引或主键中产生重复值,那么就会发生旧行的更新:如果插入的行数据与现有表中记录的唯一索引或者主键不重复,则执行新纪录插入操作.另外,ON DUPLICATE KEY UPDATE不能写where条件. 示例: create table kid_score( id tinyint unsigned not null, birth_day date not nul…
向数据库中插入一条记录,若该数据的主键值(UNIQUE KEY)已经在表中存在,则执行后面的 UPDATE 操作.否则执行前面的 INSERT 操作. 测试表结构 CREATE TABLE `flume_meta` ( `source_tab` ) COLLATE utf8_bin DEFAULT NULL UNIQUE, `current_index` ) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 执…
通过SQLServer创建索引时,有一个IGNORE_DUP_KEY的选项,可以类似实现. IGNORE_DUP_KEY = { ON | OFF } 指定对唯一聚集索引或唯一非聚集索引执行多行插入操作时出现重复键值的错误响应.默认值为 OFF. ON发出一条警告信息,但只有违反了唯一索引的行才会失败. OFF发出错误消息,并回滚整个 INSERT 事务. IGNORE_DUP_KEY 设置仅适用于创建或重新生成索引后发生的插入操作.该设置在索引创建操作期间无效. 对于 XML 索引以及对视图创…
转: mysql insert时几个操作DELAYED .IGNORE.ON DUPLICATE KEY UPDATE的区别 博客分类: mysql基础应用   mysql insert时几个操作DELAYED .IGNORE.ON DUPLICATE KEY UPDATE的区别 zccst整理 一.DELAYED的使用 使用延迟插入操作 DELAYED调节符应用于INSERT和REPLACE语句.当DELAYED插入操作到达的时候,服务器把数据行放入一个队列中,并立即给客户端返回一个状态信息,…
原帖地址:http:.html .insert ignore into 当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回.所以使用ignore请确保语句本身没有问题,否则也会被忽略掉.例如: INSERT IGNORE INTO books (name) VALUES ('MySQL Manual') .on duplicate key update 当primary或者unique重复时,则执行update语句,如update后为无用语句,如id=id,则同1功能相同,但…
在MySQL中进行条件插入数据时,可能会用到以下语句,现小结一下.我们先建一个简单的表来作为测试: CREATE TABLE `books` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `NewIndex1` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 1.insert ignore into 当插入数据时,如出现错误时,如…
on duplicate key update:针对主健与唯一健,当插入值中的主健值与表中的主健值,若相同的主健值,就更新on duplicate key update 后面的指定的字段值,若没有相同主健值,就插入该记录 mysql),primary key(fd1))engine=innodb; Query OK, rows affected (0.22 sec) mysql,"matt"); Query OK, row affected (0.16 sec) mysql,"…
ON DUPLICATE KEY UPDATE作用 先声明一点,ON DUPLICATE KEY UPDATE为Mysql特有语法,这是个坑 语句的作用,当insert已经存在的记录时,执行Update 用法 什么意思?举个例子: user_admin_t表中有一条数据如下 表中的主键为id,现要插入一条数据,id为'1',password为'第一次插入的密码',正常写法为: INSERT INTO user_admin_t (_id,password) VALUES ('1','第一次插入的密…
mysql当插入重复时更新的方法: 第一种方法: 示例一:插入多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的语句: INSERT INTO clients (client_id,client_name,client_type) SELECT supplier_id,supplier_name,'advertising' FROM suppliers WHERE not exists(select * from clients where clients.c…
业务上经常存在一种现象,需要批量往表中插入多条数据,但在执行过程中,很可能因为唯一键冲突,而导致批量插入失败.因此需要事先判断哪些数据是重复的,哪些是新增的.比较常用的处理方法就是找出已存在的数据,并将其与不存在的数据区分开,已存在的数据一条条的更新.不存在的数据则批量更新.这种方法会导致代码逻辑复杂,同时严重降低代码效率. 为了应对这种业务场景,MySQL有一种专有语法(insert into ... on duplicate key update)批量插入并更新唯一键数据 CREATE TA…
经常我们使用的最简单的数据库操作就是数据的更新,删除和插入,对于批量删除和插入的方法相信大家都很清楚,那么批量更新估计有的人就不知道了,并且还有批量插入,在插入时若有主键冲突则更新的操作,这在EAV模式中应该会经常用到吧. 曾在网上搜索相关资料,有介绍三种方法: 第一种是插入时通过where条件查询该条记录是否已经存在,就这么完了,话说这根本就没有解决问题好吧!!! 第三种是使用REPLACE语句,该语句使用很简单,就是将INSERT INTO语句中的INSERT改为REPLACE就行,其他写法…
平时我们在设计数据库表的时候总会设计 unique 或者 给表加上 primary key 的限制条件.此时 插入数据的时候 ,经常会有这样的情况:我们想向数据库插入一条记录: 若数据表中存在以相同主键的记录,我们就更新该条记录. 否则就插入一条新的记录. ON DUPLICATE KEY UPDATE 如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE:…
有时候需要进行数据操作的,如果有数据则更新数据, 没有数据则插入. 以往的做法是先查询,再根据查询结果进行判断,执行插入或更新操作 其实 有一种 ON DUPLICATE KEY UPDATE 语法, 可以在一条sql里完成上述逻辑操作. INSERT INTO tbPrize(sOpenid,iAreaId,iPlatId,SSSgroupOne,SSSgroupTwo,SSgroupOne,SSgroupTwo,SgroupOne,SgroupTwo,dtFound) VALUES ('2A…
要插入的数据  与表中记录数据的 惟一索引或主键中产生重复值,那么就会发生旧行的更新 弊端:造成主键自增不连续.适合数据量不大的表. ON DUPLICATE KEY UPDATE后面的条件 eg有如下表,仅主键存在UK(唯一)属性: select * from Student id name age 1 jack 20 2 rose 21 insert into Student ( id,name) values (1,'jack') ON DUPLICATE KEY UPDATE name…
mysql当插入重复时更新的方法: 第一种方法: 示例一:插入多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的语句: INSERT INTO clients (client_id,client_name,client_type) SELECT supplier_id,supplier_name,'advertising' FROM suppliers WHERE not exists(select * from clients where clients.c…
MySQL 当记录不存在时插入,当记录存在时更新网上基本有三种解决方法.第一种:示例一:插入多条记录假设有一个主键为 client_id 的 clients 表,可以使用下面的语句:INSERTINTOclients(client_id,client_name,client_type)SELECTsupplier_id,supplier_name,'advertising'FROMsuppliersWHEREnotexists(select*fromclientswhereclients.cli…
mysql 批量更新记录 MySql中4种批量更新的方法最近在完成MySql项目集成的情况下,需要增加批量更新的功能,根据网上的资料整理了一下,很好用,都测试过,可以直接使用. mysql 批量更新共有以下四种办法 1.将一个表的字段更新到另一个表中: create temporary table tmp(id int(4) primary key,dr varchar(50));insert into tmp values (0,'gone'), (1,'xx'),...(m,'yy'); u…
INSERT INTO osc_visit_stats(stat_date,type,id,view_count) VALUES (?,?,?,?) ON DUPLICATEKEY UPDATE view_count=view_count+? INSERT INTO osc_space_visit_records(space,user,visit_count,ip,visit_time) VALUES(?,?,?,?,?) ON DUPLICATE KEY UPDATE visit_count=…
mean:若数据表中存在以相同主键的记录,就更新该条记录.否则就插入一条新的记录. 单条:INSERT INTO tablename (`field1`,`field2`) VALUES(value1, value2) ON DUPLICATE KEY UPDATE `field1`='vlaue1','field2'='value2'; 多条:INSERT INTO tablename (`field1`,`field2`) VALUES (value1, value2), (value3,…
insert into `test` (`job_id`, `user_name`, `total_time`) values ('12345', 'zhangsan', '10') on duplicate key update `job_id` ='12345',`user_name` = 'zhangsan', `total_time`= '14'; 会判断主键或唯一键,存在就更新,不存在就插入…
实际的开发过程中,可能会遇到这样的需求,先判断某一记录是否存在,如果不存在,添加记录,如果存在,则修改数据.在INSERT语句末尾指定ON DUPLICATE KEY UPDATE可以解决这类问题. 其用法如下:如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE操作,如果不会导致唯一值重复的问题,则执行INSERT操作. 如下sql:数据库表中需建立唯一索…
ON DUPLICATE KEY UPDATE  博客 http://blog.csdn.net/jbboy/article/details/46828917…
如果在INSERT语句末尾指定了on duplicate key update,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE:如果不会导致唯一值列重复的问题,则插入新行.       例如,如果列 a 为 主键 或 拥有UNIQUE索引,并且包含值1,则以下两个语句具有相同的效果: ,) ; ; 注意:ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法!       这个语法和适合用在需…
向数据库插入记录时,有时会有这种需求,当符合某种条件的数据存在时,去修改它,不存在时,则新增,也就是saveOrUpdate操作.这种控制可以放在业务层,也可以放在数据库层,大多数数据库都支持这种需求,如Oracle的merge语句,再如本文所讲的MySQL中的INSERT ... ON DUPLICATE KEY UPDATE语句. 该语句是基于唯一索引或主键使用,比如一个字段a被加上了unique index,并且表中已经存在了一条记录值为1,下面两个语句会有相同的效果: INSERT IN…
在我们的日常开发中,你是否遇到过这种情景:查看某条记录是否存在,不存在的话创建一条新记录,存在的话更新某些字段.你的处理方式是不是就是按照下面这样? $result = mysql_query('select * from xxx where id = 1'); $row = mysql_fetch_assoc($result); if($row){ mysql_query('update ...'); }else{ mysql_query('insert ...'); } 这样的写法可能有如下…