服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL中on duplicate key update的使用方法实例

MySQL中on duplicate key update的使用方法实例

2022-11-09 16:11厄尔尼诺的夏天 Mysql

在做数据统计的时候,我们经常会用到mysql的on duplicate key update语法来自动更新数据,下面这篇文章主要给大家介绍了关于MySQL中on duplicate key update的使用方法的相关资料,需要的朋友可以参考下

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

现在数据库表内容

MySQL中on duplicate key update的使用方法实例

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 = '江苏分行';

MySQL中on duplicate key update的使用方法实例

因为没有值相同,所以一定添加

2、branch_name, created_by与表中数据不同

MySQL中on duplicate key update的使用方法实例

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

MySQL中on duplicate key update的使用方法实例

第三条数据从浙江分行改变成了江苏分行

ON DUPLICATE KEY UPDATE 后的值是要修改的值

而这个会根据唯一索引进行查询,其他普通列不做匹配(主键也是做匹配的)

可以通过下条验证

3、唯一索引branch_no不同

MySQL中on duplicate key update的使用方法实例

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不同,其他列都相同

MySQL中on duplicate key update的使用方法实例

执行后数据库增加一条

4、修改的值包括了唯一索引值branch_no

MySQL中on duplicate key update的使用方法实例

下面对唯一索引进行修改尝试

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为海南分行

MySQL中on duplicate key update的使用方法实例

可以看出对唯一索引和普通列都做了修改

总结:

1、mysql的存在就更新不存在就插入可由on duplicate key update语法实现;

2、不过只会检查添加列中有没有匹配到主键id和唯一索引的重复项;

3、如果有重复项会在on duplicate key update后进行修改指定的字段和内容;

4、所涉及的唯一索引也是可以修改的;

最后也可这样写:

原数据库表

MySQL中on duplicate key update的使用方法实例

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);

MySQL中on duplicate key update的使用方法实例

修改成了河南分行

到此这篇关于MySQL中on duplicate key update使用方法的文章就介绍到这了,更多相关MySQL on duplicate key update使用内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/m0_53077601/article/details/124886142

延伸 · 阅读

精彩推荐
  • Mysqlmysql-8.0.17-winx64 部署方法

    mysql-8.0.17-winx64 部署方法

    这篇文章主要介绍了mysql-8.0.17-winx64 部署方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下...

    NET开发者3002020-11-29
  • MysqlMysql中distinct与group by的去重方面的区别

    Mysql中distinct与group by的去重方面的区别

    distinct简单来说就是用来去重的,而group by的设计目的则是用来聚合统计的,两者在能够实现的功能上有些相同之处,但应该仔细区分,因为用错场景的话,...

    Gotcha_11982021-01-10
  • MysqlMySQL新手入门指南--快速参考

    MySQL新手入门指南--快速参考

    以下是一些重要的SQL快速参考,有关SQL的语法和在标准SQL上增加的特性,请查询MySQL手册。 ...

    mysql技术网4522019-10-15
  • Mysql用MySQL DISTINCT语句去重复记录

    用MySQL DISTINCT语句去重复记录

    在 MySQL 查询中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 DISTINCT 用于返回唯一不同的值,就是去重...

    简明现代魔法6512021-08-17
  • Mysqlmysql DBA:mysqladmin常用命令总结

    mysql DBA:mysqladmin常用命令总结

    mysqladmin是MySQL一个重要的客户端,最常见的是使用它来关闭数据库,除此,该命令还可以了解MySQL运行状态、进程信息、进程杀死等。本文介绍一下如何使...

    MYSQL教程网4912020-03-20
  • Mysqlwindows 64位下mysql 8.0.13 安装配置方法图文教程

    windows 64位下mysql 8.0.13 安装配置方法图文教程

    这篇文章主要为大家详细介绍了windows 64位下mysql 8.0.13 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    日日言谧5322020-09-09
  • Mysql解决阿里云ECS服务器下安装MySQL无法远程连接的问题

    解决阿里云ECS服务器下安装MySQL无法远程连接的问题

    这篇文章介绍了解决阿里云ECS服务器安装MySQL无法远程连接的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学...

    taadis9172022-07-13
  • MysqlMysql ALTER TABLE加字段的时候到底锁不锁表

    Mysql ALTER TABLE加字段的时候到底锁不锁表

    本文主要介绍了Mysql ALTER TABLE加字段的时候到底锁不锁表,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    walker_sunxy11682021-09-27