当前位置:网站首页>MySQL的on duplicate key update 的使用
MySQL的on duplicate key update 的使用
2022-07-30 20:14:00 【iijik55】
mysql的存在就更新不存在就插入实现
先建数据库表,重点要添加主键索引(id列,没有测试)和唯一索引(branch_no列),随便找表测试
INSERT INTO t_name ( c1, c2, c3 )
VALUES
( 1, '1', '1')
ON DUPLICATE KEY UPDATE
c2 = '2';
测试:
1、organ_no, branch_no, branch_name, created_by字段都不相同
2、branch_name, created_by不同
3、唯一索引branch_no不同
4、修改的值包括了唯一索引值branch_no
现在数据库表内容

1、执行sql :organ_no, branch_no, branch_name, created_by字段都不相同
INSERT INTO t_bank_organ_copy1 ( organ_no, branch_no, branch_name, created_by )
VALUES
( 1, '3', '浙江分行', '3' )
ON DUPLICATE KEY UPDATE
branch_name = '江苏分行';

因为没有值相同,所以一定添加
2、branch_name, created_by与表中数据不同

INSERT INTO t_bank_organ_copy1 ( organ_no, branch_no, branch_name, created_by )
VALUES
( 1, '3', '海南分行', '4' )
ON DUPLICATE KEY UPDATE
branch_name = '江苏分行';

第三条数据从浙江分行改变成了江苏分行
ON DUPLICATE KEY UPDATE 后的值是要修改的值
而这个会根据唯一索引进行查询,其他普通列不做匹配(主键也是做匹配的)
可以通过下条验证
3、唯一索引branch_no不同

INSERT INTO t_bank_organ_copy1 ( organ_no, branch_no, branch_name, created_by )
VALUES
( 1, '4', '江苏分行', '3' )
ON DUPLICATE KEY UPDATE
branch_name = '海南分行';
除了唯一索引branch_no不同,其他列都相同

执行后数据库增加一条
4、修改的值包括了唯一索引值branch_no

下面对唯一索引进行修改尝试
INSERT INTO t_bank_organ_copy1 ( organ_no, branch_no, branch_name, created_by )
VALUES
( 1, '4', '江苏分行', '3' )
ON DUPLICATE KEY UPDATE
branch_name = '海南分行',
branch_no = '8';
修改branch_no 4为8,并修改branch_name为海南分行

可以看出对唯一索引和普通列都做了修改
总结:
1、mysql的存在就更新不存在就插入可由on duplicate key update语法实现;
2、不过只会检查添加列中有没有匹配到主键id和唯一索引的重复项;
3、如果有重复项会在on duplicate key update后进行修改指定的字段和内容;
4、所涉及的唯一索引也是可以修改的;
最后也可这样写:
原数据库表

INSERT INTO t_bank_organ_copy1 ( organ_no, branch_no, branch_name, created_by )
VALUES
( 1, '8', '河南分行', '3' )
ON DUPLICATE KEY UPDATE
branch_name = values(branch_name);

修改成了河南分行
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- 移动web开发01
- 银行数据资产转换能力弱?思迈特软件助力解决银行困境
- Face-based Common Expression Recognition (2) - Data Acquisition and Arrangement
- MySQL大批量造数据
- 啊?现在初级测试招聘都要求会自动化了?
- Frog jumping steps (recursive and non-recursive) ------- Xiaolele walks the steps
- 第03章 用户和权限管理【1.MySQL架构篇】【MySQL高级】
- YOLO V3详解
- Day31 LeetCode
- 推荐系统:实时性【特征实时性:客户端实时特征(秒级,实时)、流处理平台(分钟级,近实时)、分布式批处理平台(小时/天级,非实时)】【模型实时性:在线学习、增量更新、全量更新】
猜你喜欢

ELK log analysis system

推荐系统:评估指标【离线评估指标:RMSE(均方根误差)、AUC、准确率、召回率、F1】【在线评估:A/B测试】【一般要求响应时间<0.5s】

Common Expression Recognition Based on Face (1) - Basic Knowledge of Deep Learning

ceph的部署练习

第03章 用户和权限管理【1.MySQL架构篇】【MySQL高级】

excel数字显示e+17怎么恢复?excel数字变成了小数点+E+17的解决方法

TensorFlow2:概述

推荐系统:实时性【特征实时性:客户端实时特征(秒级,实时)、流处理平台(分钟级,近实时)、分布式批处理平台(小时/天级,非实时)】【模型实时性:在线学习、增量更新、全量更新】

ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘解决方法
![[PM only] Quickly count who else in the team has not registered and reported information, and quickly screen out the members of their own project team who have not completed the list of XXX work items](/img/74/94c254b7694a77d635f5f538a72fe0.png)
[PM only] Quickly count who else in the team has not registered and reported information, and quickly screen out the members of their own project team who have not completed the list of XXX work items
随机推荐
网络安全实验环境搭建
线性结构:顺序表和链表
HMS Core音频编辑服务音源分离与空间音频渲染,助力快速进入3D音频的世界
化二次型为标准型
从离线到实时对客,湖仓一体释放全量数据价值
Frog jumping steps (recursive and non-recursive) ------- Xiaolele walks the steps
SQLyog注释 添加 撤销 快捷键
是对称矩阵的对角化
移动web开发01
vlookup函数匹配不出来只显示公式的解决方法
HarmonyOS Notes ------------- (3)
excel数字如何转换成文本?excel表格数据转换成文本的方法
“数字化重构系统,搞定 CEO 是第一步”
MySQL Functions (Classic Collection)
Maxwell 一款简单易上手的实时抓取Mysql数据的软件
excel数字下拉递增怎么设置?
KEIL problem: [keil Error: failed to execute 'C:\Keil\ARM\ARMCC']
【请教】SQL语句按列1去重来计算列2之和?
idea plugins搜索不到插件
我是一名阿里在职9年软件测试工程师,我的经历也许能帮到处于迷茫期的你