mysql插入并更新(on duplicate key update)
Mysql插入数据,如果存在此数据,那么就更新这条数据,否则插入数据。
使用 on duplicate key update。
准备工作
建表
create table user_info(id int auto_increment primary key,name varchar(20),user_code varchar(20) unique not null,age int
);
建立了一个表,这个表有主键(id),有唯一键(user_code)。
插入数据
insert into user_info(name,user_code,age) values('king','u_001',22);
insert into user_info(name,user_code,age) values('king2','u_002',24);
insert into user_info(name,user_code,age) values('king3','u_003',25);
主键更新
利用主键(id)匹配是否有数据插入更新。
INSERT into user_info(id,name,user_code) values(1,'Tom','i_001') on DUPLICATE key UPDATE id=1,name='Tom2',user_code='t_001';INSERT into user_info(id,name,user_code) values(1,'Tom','i_001') on DUPLICATE key UPDATE name='Tom2',user_code='t_001';# 这两种都可以更新同一条数据。
此处根据id=1判断,如果存在id=1的数据,那么就不insert,而是执行update。
如果是依据主键更新,那么唯一键有可以被更新。
执行后发现是影响了两条数据。
再查看下数据,发现id=1的数据被更新了,并没有新插入一条数据,连user_code也更新了。
根据唯一键更新
不传入id,而根据user_code这个唯一键判断是否是匹配的数据,来进行更新。
INSERT into user_info(name,user_code) values('Tom01','t_001') on DUPLICATE key UPDATE name='Tom001',user_code='t_0001';
插入是判断user_code=t_001,发现表里面已经有此条数据,那么就执行更新语句,发现唯一键也被更新了。
执行插入
INSERT into user_info(name,user_code) values('Tom01','t_002') on DUPLICATE key UPDATE name='Tom001',user_code='t_0001';
此处执行了插入数据,因为根据user_code=t_002发现数据库并没有这条数据,那么执行insert。
注意项
如果没有id,也不根据唯一键user_code,那么就只会执行插入,而不会有更新。
INSERT into user_info(name,age) values('Tom',22) on DUPLICATE key UPDATE name='Tom2',age = 23;
更新时影响条数,为1.
操作 | 影响条数 |
---|---|
插入(insert) | 1 |
更新(update) | 1 |
on duplicate key update (插入) | 1 |
on duplicate key update (更新) | 2 |
那么可以想象一下,插入并更新应该是做了delete操作,然后insert新数据,当然这仅仅是猜测。
mysql插入并更新(on duplicate key update)相关推荐
- MySQL的INSERT INTO··· ON DUPLICATE KEY UPDATE使用的几种情况
保存或更新 在MySQL数据库中,如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句,而要插入的行与表中现有记录的惟一索引或主键中产生重复值,那么就会发生旧行的更新:如 ...
- (转载)[MySQL技巧]INSERT INTO… ON DUPLICATE KEY UPDATE
(转载)http://blog.zol.com.cn/2299/article_2298921.html MySQL 自4.1版以后开始支持INSERT - ON DUPLICATE KEY UPDA ...
- mysql使用INSERT INTO ON DUPLICATE KEY UPDATE导致dead lock分析和解决
一.事件回放 2019年1月的几天时间里每天会收到1次或者2次死锁的短信告警,死锁日志如下图. 二.检查业务场景和程序处理流程 用户打赏礼物请求处理,涉及到用户余额表和佣金账户表,以下所有操作在一个事 ...
- MYSQL中ON DUPLICATE KEY UPDATE对数据进行insertOrUpdate操作
本文来自:高爽|Coder,原文地址:[url]http://blog.csdn.net/ghsau/article/details/23557915[/url],转载请注明. 向数据库插入记录时,有 ...
- ON DUPLICATE KEY UPDATE 用法与说明
ON DUPLICATE KEY UPDATE作用 先声明一点,ON DUPLICATE KEY UPDATE为Mysql特有语法,这是个坑 语句的作用,当insert的时候如果对应的记录已经存在,则 ...
- mysql批量更新,批量插入之replace语句/insert into... on duplicate key update语句
mysql批量更新/插入数据有以下方法,使用这些方法批量插入数据/更新数据的时候就不用在代码层次增加判断数据是否已存在的逻辑了. 1:replace语句 2: insert into... on du ...
- MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)
本文章来给大家提供三种在mysql中避免重复插入记录方法,主要是讲到了ignore,Replace,ON DUPLICATE KEY UPDATE三种方法,各位同学可尝试参考. 案一:使用ignore ...
- MySQL插入语句insert into,insert ignore into,insert into ... on duplicate key update,replace into-解决唯一键约束
文章目录 常用插入语句 insert into insert ignore into insert into ... on duplicate key update replace into 使用场景 ...
- mysql 复合主键更新_MySQL复合主键下ON DUPLICATE KEY UPDATE语句失效问题
问题的起因,假设有一张表,里面保存了交易订单,每张订单有唯一的ID,有最后更新时间,还有数据,详情如下: 针对这张表会做追加及更新的操作,具体来说就是如果订单不存在就INSERT一条新的,如果已存在就 ...
最新文章
- 豆瓣评分8.6,这本书启发无数开发者
- iscsi target 配置(服务端安装)--一
- readonly 和 disable的区别
- 初次使用 Elasticsearch 遇多种分词难题?那是你没掌握这些原理
- 分布式存储--理解分布式文件系统、分布式块存储、分布式对象存储、分布式数据库
- Flask 模版(四)- 时间 Flask-Moment
- 腾讯通RTX发送文件出错的解决方法
- 【网络安全】XCodeGhost事件刨根问底
- CDN架构原理、流量模型、网络调优
- 一起学ORBSLAM2(6)ORBSLAM中的特征匹配
- 40 if 虚拟条件句(虚拟语气)假设现在
- 一款轻量的支付宝支付组件
- 5G网速比4G快那么多,是否意味着4G即将淘汰?
- 后端每天更新微信用户用户头像
- 排序-JAVA实现【四】堆排序
- 百度搜索公正性彻底调查
- ceph mon 无法启动,报错:ceph-12.2.11/src/mon/AuthMonitor.cc: 157: FAILED assert(ret == 0)
- Word2007 无法复制粘贴的原因以及正确加载mathtype
- 2022-2028全球与中国硅片清洗设备市场现状及未来发展趋势
- 河南移动物联网建设加速 亿元级市场呼之欲出
热门文章
- 移动互联网领域的技术有哪些:
- 学测试必看!测试理论知识之测试基础
- Oracle高人写的Oracle运行原理性文章(zt)
- 起凡显示连接服务器失败,起凡游戏——起于凡而非凡 平台功能指南 - 游戏积分 - 影响游戏积分的因素...
- 无线监控出观服务器异常,手机连监控连接服务器异常什么原因
- 滕云:DDD实现之路
- 计算机三级网络技术网络聚合,计算机三级《网络技术》操作试题及答案2016
- 中国社科院与美国杜兰大学金融管理硕士项目——你永远可以,成为想要的自己
- PB 操作EXCEL表的方法
- 好书推荐:货币战争中的犹太人