博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql Insert Or Update语法例子
阅读量:6313 次
发布时间:2019-06-22

本文共 1026 字,大约阅读时间需要 3 分钟。

有的时候会需要写一段insert的sql,如果主键存在,则update;如果主键不存在,则insert。Mysql中提供了这样的用法:ON DUPLICATE KEY UPDATE。下面就看看它是如何使用的吧!

首先数据库的原始数据如下:

a   b   c1   b1  c12   b2  c23   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')错误代码: 1062Duplicate 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   c1   b4  c42   b2  c23   b3  c3
本文转自博客园xingoo的博客,原文链接:,如需转载请自行联系原博主。
你可能感兴趣的文章
linux下安装JDK
查看>>
可视化编程开发板TurnipBit支持LED亮度可调功能
查看>>
ehcache2拾遗之write和load
查看>>
高性能 TCP & UDP 通信框架 HP-Socket v3.5.2
查看>>
从二进制数据流中构造GDAL可以读取的图像数据
查看>>
Android自定义组件系列【11】——实现3D立体旋转效果
查看>>
数组方法
查看>>
C# 视频监控系列 序 [完]
查看>>
solr与.net系列课程(二)solr的配置文件及其含义
查看>>
KVM安装
查看>>
HTML5基础(三)
查看>>
restful api理解
查看>>
Tomcat在Windows下的免安装配置
查看>>
gulp解决跨域的配置文件
查看>>
Hibernate核心配置文件
查看>>
Object
查看>>
百度富文本编辑器整合fastdfs文件服务器上传
查看>>
sublime分屏显示
查看>>
python常用模块
查看>>
linux 目录结构+常用命令+压缩命令+vim使用+及基础知识
查看>>