Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >MySQL insert or update sql

MySQL insert or update sql

作者头像
全栈程序员站长
发布于 2022-11-15 02:31:12
发布于 2022-11-15 02:31:12
2.8K00
代码可运行
举报
运行总次数:0
代码可运行

MySQL 一条 sql 实现数据保存变更 insert or update ,如果没有执行insert,有就update

需要 有主键 PRIMARY 或 唯一索引 UNIQUE

MySQL中的INSERT … ON DUPLICATE KEY UPDATE语句,该语句是基于唯一索引或主键使用

ON DUPLICATE KEY UPDATE后面可以放多个字段,用英文逗号分割。使用ON DUPLICATE KEY UPDATE,最终如果插入了一个新行,则受影响的行数是1,如果修改了已存在的一行数据,则受影响的行数是2,如果值不变,则受影响行数是0。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INSERT INTO `quiz_reb_grade`(
		`appid`,`openId`,`wechat_name`,`level`,`type`,`num_sum`,`num_true`,`grade`,`time_sub`,`time_do`
		) VALUES(
		'wx8c6e61e00505878e','ozt9K0ykJJnLp-oASEl7ly_BKj7w','奈何',1,1,5,4,60,NOW(),300
		) ON DUPLICATE KEY UPDATE `num_sum`=5,
		`num_true`=4,
		`grade`=20,
		`time_sub`=NOW(),
		`time_do`=200;

上面语句亲测可用,但有一个警告

共 2 行受到影响, 1 个警告

执行耗时 : 0.059 sec 传送时间 : 0 sec 总耗时 : 0.060 sec

Note Code : 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT… ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY is unsafe

翻译:使用BINLOG_FORMAT =语句格式写入二进制日志的不安全语句。插入……对于具有多个唯一密钥的表的重复密钥更新是不安全的

相关博客:https://blog.csdn.net/rick_zyl/article/details/79024612 mysql 有就更新 没有就插入

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/232031.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月31日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL INSERT的4种形态
墨墨导读:MySQL中常用的四种插入数据的语句: insert ,insert select,replace into,insert into on duplicate key update,以下详述这四种插入数据的语句,希望可以帮助到大家。
数据和云
2020/08/11
1.6K0
MySQL binlog 为 statement 格式考虑是不安全(slave端不一致)的操作
Statements considered unsafe.  Statements with the following characteristics are considered unsafe:
前Thoughtworks-杨焱
2021/12/07
6730
MySQL踩坑记之Replace Into导致自增ID冲突
最近有客户反馈,说线上服务在一小段时间内出现偶发的请求失败情况,需要我们排查并给出具体问题。对于这样的问题,我们一般都会猜疑是不是网络抖动,但是需要有理有据的解释清楚问题,还是要基于日志事实求事去分析。在日志中我发现的报错是这个样子的:
COY_fenfei
2022/03/14
4.3K0
MySQL踩坑记之Replace Into导致自增ID冲突
insert...on duplicate key update语法
这样的操作乍一看没有什么问题,但是仔细分析分析,还是有些瓶颈的,目前来看,我能分析到的瓶颈有两个,
AsiaYe
2019/11/06
2.6K0
Mysql死锁如何排查:insert on duplicate死锁一次排查分析过程
遇到Mysql死锁问题,我们应该怎么排查分析呢?之前线上出现一个insert on duplicate死锁问题,本文将基于这个死锁问题,分享排查分析过程,希望对大家有帮助。
捡田螺的小男孩
2020/04/15
2.3K0
Mysql死锁如何排查:insert on duplicate死锁一次排查分析过程
INSERT...ONDUPLICATEKEYUPDATE产生deathlock死锁原理讲解及解决办法
地址:【转】INSERT...ONDUPLICATEKEYUPDATE产生deathlock死锁原理讲解及解决办法_on duplicate key update死锁解决-CSDN博客
用户1148526
2024/02/02
5890
INSERT...ONDUPLICATEKEYUPDATE产生deathlock死锁原理讲解及解决办法
mysql update语句和原数据一样会更新么
如果 update 语句和原数据一样会更新么?更具体的来说,如果更新的数据前后是一样的,MySQL 会更新存储引擎中(磁盘)数据么?
luoxn28
2021/01/18
1.8K0
TiDB 源码阅读系列文章(十六)INSERT 语句详解
在之前的一篇文章 《TiDB 源码阅读系列文章(四)INSERT 语句概览》 中,我们已经介绍了 INSERT 语句的大体流程。为什么需要为 INSERT 单独再写一篇?因为在 TiDB 中,单纯插入一条数据是最简单的情况,也是最常用的情况;更为复杂的是在 INSERT 语句中设定各种行为,比如,对于 Unique Key 冲突的情况应如何处理:是报错?是忽略当前插入的数据?还是覆盖已有数据?所以,这篇会为大家继续深入介绍 INSERT 语句。
PingCAP
2018/08/20
1.5K0
MySQL避免插入重复记录的方法
mysql在存在主键冲突或者唯一键冲突的情况下,根据插入策略不同,一般有以下三种避免方法。 1、insert ignore 2、replace into 3、insert on duplicate key update
IT工作者
2022/01/26
2.4K0
MySQL重大Bug!自增主键竟然不是连续递增
AUTO_INCREMENT=2,表示下一次插入数据时,若需要自动生成自增值,会生成id=2。
JavaEdge
2021/10/18
2.6K0
MySQL自增主键详解「建议收藏」
2.InnoDB引擎的自增值,在MySQL5.7及之前的版本,自增值保存在内存里,并没有持久化。每次重启后,第一次打开表的时候,都会去找自增值的最大值max(id),然后将max(id)+步长作为这个表当前的自增值
全栈程序员站长
2022/09/06
6K0
MySQL自增主键详解「建议收藏」
Mysql INSERT ON DUPLICATE KEY UPDATE
INSERT ... ON DUPLICATE KEY UPDATE是MySQL insert的一种扩展。当发现有重复的唯一索引(unique key)或者主键(primary key)的时候,会进行更新操作;如果没有,那么执行插入操作。
霸王猪
2018/07/19
4.9K0
Mysql INSERT ON DUPLICATE KEY UPDATE
mysql-选择使用Repeatable read的原因
在mysql调优的过程中发现,mysql的默认隔离级别是可重复读(repeatable read),其他几类关系型数据库pg,以及sybase,oracle,sqlserver的默认的隔离级别都是读已提交(read committed)。
用户7353950
2022/06/23
6920
insert语句的加锁情况分析
今天分享的内容是MySQL里面insert语句的加锁情况,废话就不多说了,直接从线上的例子开始吧。
AsiaYe
2020/06/06
2.3K0
MySQL主从同步如何保证数据一致性
假设主备切换前,我们的主库是节点A,节点B是节点A的备库,客户端的读写都是直接访问节点A,节点B只是将A的更新同步过来然后本地执行,同步完成以后,节点AB的数据就一致了。
shysh95
2022/04/07
1.7K0
MySQL主从同步如何保证数据一致性
CDB关于记录binlog内容浅析
有客户咨询到update一条没有记录的数据是否会记录到binlog文件中,按照不同的binlog_format记录的方式有所不同,STATEMENT记录完整的SQL语句,ROW格式记录变化内容,本文来探究CDB binlog相关问题
HappyLau谈云计算
2019/10/10
1.9K0
CDB关于记录binlog内容浅析
INSERT ... ON DUPLICATE KEY UPDATE
该文介绍了MySQL中INSERT ... ON DUPLICATE KEY UPDATE语句的用法,该语句用于在表中插入新行,并在特定条件下更新现有行。
高爽
2017/12/28
1.8K0
MySQL二进制日志
MySQL 5.5 中对于二进制日志 (binlog) 有 3 种不同的格式可选:Mixed,Statement,Row,默认格式是 Statement。 总结一下这三种格式日志的优缺点。 默认binlog 设置 mysql> mysql> show variables like 'binlog_%'; +-----------------------------------------+--------------+ | Variable_name |
冷冷
2018/02/08
1K0
MySQL实战中,Insert语句的使用心得总结
小伙伴想精准查找自己想看的MySQL文章?喏 → MySQL专栏目录 | 点击这里
陈哈哈
2021/10/13
1.5K0
MySQL 中 update 修改数据与原数据相同会再次执行吗
本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在MySQL内部重新执行吗?
芋道源码
2019/11/18
1.1K0
相关推荐
MySQL INSERT的4种形态
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验