Mysql Insert Or Update语法实例
有的时候会需要写一段insert的sql,如果主键存在,则update;如果主键不存在,则insert。Mysql中提供了这样的用法:
ON DUPLICATE KEY UPDATE
。下面就看看它是如何使用的吧!
首先数据库的原始数据如下:
a b c
1 b1 c1
2 b2 c2
3 b3 c3
此时如果执行下面的sql就会报错
INSERT INTO test VALUES(1,'b4','c4');
报错信息如下,提示无法重复插入:
1 queries executed, 0 success, 1 errors, 0 warnings查询:insert into test values(1,'b4','c4')错误代码: 1062
Duplicate entry '1' for key 'PRIMARY'执行耗时 : 0 sec
传送时间 : 0 sec
总耗时 : 0.008 sec
这时,就可以使用ON DUPLICATE KEY UPDATE
,它的意思是先执行前面的Insert,如果主键重复,则执行后面的UPDATE
INSERT INTO test VALUES (1,'b4','c4') ON DUPLICATE KEY UPDATE b=VALUES(b),c=VALUES(c);
可以把上面的SQL简单的理解为:
select count(1) from test where a=1;if count(1) > 0UPDATE test SET b='xxx',c='xxx' WHERE a=1;
执行完,可以看到有两行收到影响(至于为什么两行收到影响,就得研究底层的实现了,可以参考官方文档):
1 queries executed, 1 success, 0 errors, 0 warnings查询:INSERT INTO test VALUES (1,'b4','c4') ON DUPLICATE KEY UPDATE b=VALUES(b),c=VALUES(c)共 2 行受到影响执行耗时 : 0.023 sec
传送时间 : 0 sec
总耗时 : 0.023 sec
执行完,数据就变成下面的样子了:
a b c
1 b4 c4
2 b2 c2
3 b3 c3
Mysql Insert Or Update语法实例相关推荐
- golang mysql update_golang mysql insert 和 update使用举例
本文结合使用场景简单介绍sql中的insert.update的使用. 以下是代码: 如果记录已经存在,则更新,否则插入新记录. package main import ( "database ...
- MySQL insert or update sql
MySQL 一条 sql 实现数据保存变更 insert or update ,如果没有执行insert,有就update 需要 有主键 PRIMARY 或 唯一索引 UNIQUE MySQL中 ...
- MySQL insert ignore/ update ignore 不只用来忽略id重复
摘自https://www.mysqlzh.com/doc/126/254.html 如果您在一个INSERT语句中使用IGNORE关键词,在执行语句时出现的错误被当作警告处理.例如,没有使用IGNO ...
- A2-02-24.DML- Inserting Data into A Table Using MySQL INSERT Statement
转载自:http://www.mysqltutorial.org/mysql-insert-statement.aspx Home / Basic MySQL Tutorial / Inserting ...
- Mysql INSERT、REPLACE、UPDATE的区别
用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句.言外之意,就是对数据进行修改.在标准的SQL中有3个语句,它们是INSE ...
- c mysql insert语句_MySQL_mysql insert详细讲解,INSERT语法
INSERT [LOW_PRIORITY |DELA - phpStudy...
INSERT语法 INSERT [LOW_PRIORITY |DELAYED| HIGH_PRIORITY] [IGNORE] [INTO]tbl_name[(col_name,...)] VALUE ...
- 深入mysql ON DUPLICATE KEY UPDATE 语法的分析
mysql "ON DUPLICATE KEY UPDATE" 语法 如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNI ...
- mysql 触发器不能同时 insert or update or delete_MySQL6:触发器
什么是触发器 MySQL的触发器(trigger)和存储过程一样,都是嵌入到MySQL中的一段程序.触发器是由事件来触发某个操作,这些事件包括INSERT.UPDATE和DELETE语句.如果定义了触 ...
- 转载:MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解
转自:http://www.jb51.net/article/39199.htm 本篇文章是对MySQL数据库INSERT.UPDATE.DELETE以及REPLACE语句的用法进行了详细的分析介绍, ...
最新文章
- R语言自定义函数计算dataframe每列中的缺失值NA的个数、缺失值问题及其填充示例
- html网页滚轮滑动页面,JQuery实现鼠标滚轮滑动到页面节点
- P3225 [HNOI2012]矿场搭建
- Leetcode 136.只出现一次的数字 (每日一题 20210714)
- 注意区分啊~这里求的的事公共子串不是子序列。NOJ308-Substring
- java akka_Akka系列(九):Akka分布式之Akka Remote
- C++_IO与文件5-文件的输入与输出
- linux php 源码安装,Linux下PHP的源码安装与配置
- el 能否定义作用域变量_JS块级作用域和let,const,var区别
- 贪吃蛇小游戏——C语言编写
- android 阿拉伯语下布局,android设计的布局在阿拉伯语下界面错乱的解决方法
- 如果更快的访问ESS系统?
- 用华为模拟器ENSP构造校园网(第三天)配置总网络拓扑DHCP中继和实现路由通信
- 我的Qt作品(12)使用Qt+OpenCV实现一个带旋转角度的Shape形状匹配演示软件
- 用Python玩转数据(一)
- 二叉树相关题(Java实现)
- autocad不能画图_记住这10个cad画图技巧,轻松精通cad
- 基于SSH+MySQL+Bootstrap的高校实验室预约管理系统
- Q learning--强化学习系列文章3
- ssm查询,错误Could not find result map cn.itcast.ssm.po.ItemsCustom
热门文章
- 按我的理解string似乎不是字面值类型,但为什么《c++ primer》习题7.55答案说Data类是集合类呢?
- php的cookie不存在会是什么值,PHP setcookie() 首次存储不上值
- 8086汇编-实验6(微调)-小写转换大写
- [转]vim基础入门、语法速探、快捷键与宏
- 排序算法——快速排序算法
- nb信号和4g信号_手机信号很强但是4G网络却很卡?学会这三招,立马恢复网速
- org.apache.poi.openxml4j.exceptions.InvalidOperationException: Can't open the specified file
- linux里查看所有用户和用户组
- 为什么都说猫有九条命呢
- aspnetboilerplate .net core 使用原生sql