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

本文共 1033 字,大约阅读时间需要 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') 错误代码: 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) > 0 UPDATE 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

转载于:https://www.cnblogs.com/honey01/p/7383064.html

你可能感兴趣的文章
.NET项目从CI到CD-Jenkins_Pipeline的应用
查看>>
E2.(b)
查看>>
ini 解析库,config 解析库不完全列表
查看>>
awk常见操作整理(更新)
查看>>
javaEE项目实践——学生信息管理系统
查看>>
E. Black Box
查看>>
( ̄▽ ̄") 没钱了
查看>>
模拟退火算法实现代码
查看>>
代码中动态添加Button的点击事件
查看>>
【luogu P2071 座位安排】 题解
查看>>
两道FFT的应用题
查看>>
STL next_permutation 全排列
查看>>
IntentActivity的用法(activity的五态之外)
查看>>
小米手机不断自己重启问题解决
查看>>
软件测试为何我会首选Python
查看>>
python读取指定字节长度的文本
查看>>
二元线性回归
查看>>
python运维开发(十六)----Dom&&jQuery
查看>>
买书求如何获得折扣使价格最低
查看>>
Service相关--读书笔记
查看>>