ON DUPLICATE KEY UPDATE

简介: ON DUPLICATE KEY UPDATE

问题引出


案例:某个餐桌(id)花了多少钱(num)


1.png


如果4号餐桌点了一份西红柿4元,我们可以插入;如果3号餐桌点了一份西红柿4元,我们可以修改

你选择insert或者update的原因是你知道他原来有没有数据

如果你不知道呢???

一般我们的逻辑为

先查询,如果没有,插入;反之修改


if not exists (select )
      insert 
else
      update 


最简单直观的问题;发送两条SQL语句吧,性能问题


解决方法


有则改之无则加勉,数据库中同样也有相似的问题,有就修改,没有就插入

ON DUPLICATE KEY UPDATE 就是解决,如果有数据就修改,如果没有数据就插入的问题

第一次执行(数据库中没有id 为4的数据)


INSERT INTO hello (id,num) VALUES (4,4) ON DUPLICATE KEY UPDATE id = 4 ,num = 4+num;


1.png


第二次执行(数据库中有id为4的数据)


INSERT INTO hello (id,num) VALUES (4,4) ON DUPLICATE KEY UPDATE id = 4 ,num = 4+num;


Query OK, 2 rows affected


1.png

目录
相关文章
|
关系型数据库 MySQL
Mysql 主键冲突(ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY')
Mysql 主键冲突(ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY')
1355 0
|
8月前
|
存储 索引
Map存储两个key:Duplicate key 6
Map存储两个key:Duplicate key 6
306 0
|
8月前
|
数据库 Python
Duplicate entry for key username
Duplicate entry for key username
90 0
|
数据库
MongoError: E11000 duplicate key error collection: blog.users index: email_1 dup key
MongoError: E11000 duplicate key error collection: blog.users index: email_1 dup key
|
SQL 关系型数据库 MySQL
INSERT ... ON DUPLICATE KEY UPDATE Statement
INSERT ... ON DUPLICATE KEY UPDATE Statement
99 0
|
SQL 关系型数据库 MySQL
Mysql统计技巧:ON DUPLICATE KEY UPDATE用法
Mysql统计技巧:ON DUPLICATE KEY UPDATE用法
326 0
|
关系型数据库 MySQL 数据库
解决出现的SQLIntegrityConstraintViolationExceptionw:Duplicate entry ‘10‘ for for key ‘user.PRIMARY‘问题
解决出现的SQLIntegrityConstraintViolationExceptionw:Duplicate entry ‘10‘ for for key ‘user.PRIMARY‘问题
281 0
|
数据可视化 关系型数据库 MySQL
MySql命令报错:Duplicate entry ‘10‘ for key ‘PRIMARY‘解决方案
MySql命令报错:Duplicate entry ‘10‘ for key ‘PRIMARY‘解决方案
667 0
|
SQL 关系型数据库 MySQL
explain 之 possible_keys 和 key 介绍|学习笔记
快速学习 explain 之 possible_keys 和 key 介绍
1716 0
|
关系型数据库 MySQL
MySQL - Duplicate entry for key PRIMARY
MySQL - Duplicate entry for key PRIMARY
336 0

热门文章

最新文章