MySQL 处理插入过程中的主键唯一键重复值的解决方法_Mysql_脚本之家


本站和网页 https://www.jb51.net/article/82441.htm 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

MySQL 处理插入过程中的主键唯一键重复值的解决方法_Mysql_脚本之家
脚本之家
服务器常用软件
手机版
投稿中心
关注微信
快捷导航
软件下载
android
MAC
驱动下载
字体下载
DLL
源码下载
PHP
ASP.NET
ASP
JSP
软件编程
C#
JAVA
C 语言
Delphi
Android
网络编程
PHP
ASP.NET
ASP
JavaScript
在线工具
CSS格式化
JS格式化
Html转化为Js
数据库
MYSQL
MSSQL
oracle
DB2
MARIADB
CMS
PHPCMS
DEDECMS
帝国CMS
WordPress
常用工具
PHP开发工具
python
Photoshop
必备软件
网站首页
网页制作
网络编程
脚本专栏
脚本下载
数据库
服务器
电子书籍
操作系统
网站运营
平面设计
其它
媒体动画
电脑基础
硬件教程
网络安全
MsSql
Mysql
mariadb
oracle
DB2
mssql2008
mssql2005
SQLite
PostgreSQL
MongoDB
Redis
Access
数据库文摘
数据库其它
您的位置:首页 → 数据库 → Mysql → mysql主键重复
MySQL 处理插入过程中的主键唯一键重复值的解决方法
更新时间:2016年04月15日 09:26:27 投稿:mrr
本篇文章主要介绍在插入数据到表中遇到键重复避免插入重复值的处理方法,主要涉及到IGNORE,ON DUPLICATE KEY UPDATE,REPLACE的相关知识,感兴趣的朋友一起学习吧
本篇文章主要介绍在插入数据到表中遇到键重复避免插入重复值的处理方法,主要涉及到IGNORE,ON DUPLICATE KEY UPDATE,REPLACE;接下来就分别看看这三种方式的处理办法。
IGNORE
使用ignore当插入的值遇到主键(PRIMARY KEY)或者唯一键(UNIQUE KEY)重复时自动忽略重复的记录行,不影响后面的记录行的插入,
创建测试表
CREATE TABLE Tignore
(ID INT NOT NULL PRIMARY KEY ,
NAME1 INT
)default charset=utf8;
正常的插入如果插入的记录中存在键重复会报错,整个语句都会执行失败
使用IGNORE如果插入的记录中存在重复值会忽略重复值的该记录行,不影响其它行的插入。
REPLACE
使用replace当插入的记录遇到主键或者唯一键重复时先删除表中重复的记录行再插入。
REPLACE INTO Treplace() VALUES(1,1),(1,2),(2,2);
创建测试表
DROP TABLE IF EXISTS Treplace;
CREATE TABLE Treplace
(ID INT NOT NULL PRIMARY KEY ,
NAME1 INT
)default charset=utf8;
从输出的信息可以看到是4行受影响,说明它是先插入了(1,1)然后又删除了(1,1)
ON DUPLICATE KEY UPDATE
当插入的记录遇到主键或者唯一键重复时,会执行后面定义的UPDATE操作。
相当于先执行Insert 操作,再根据主键或者唯一键执行update操作。
创建测试表
DROP TABLE IF EXISTS Tupdate;
CREATE TABLE Tupdate
(ID INT NOT NULL PRIMARY KEY ,
NAME1 INT UNIQUE KEY
)default charset=utf8;
INSERT INTO Tupdate() VALUES(1,1),(1,2) ON DUPLICATE KEY UPDATE NAME1=NAME1+1;
INSERT INTO Tupdate() VALUES(1,1),(1,2) ON DUPLICATE KEY UPDATE NAME1=VALUES(NAME1)+1;
第一条语句相当于执行:
INSERT INTO Tupdate() VALUES(1,1)
UPDATE Tupdate
SET NAME1=NAME1+1
WHERE ID=1;
第二条语句相当于执行:
INSERT INTO Tupdate() VALUES(1,1)
UPDATE Tupdate
SET NAME1=2+1
WHERE ID=1;
在ON DUPLICATE KEY UPDATE后面使用VALUES指的就是插入的记录的值,而不使用VALUES指的是表的自身值。
注意: ON DUPLICATE KEY UPDATE的后面执行的UPDATE更新的记录是WHERE重复的主键或者唯一键的ID,这点非常重要。
比如下面这种情况:
INSERT INTO Tupdate() VALUES(1,1),(2,1) ON DUPLICATE KEY UPDATE NAME1=VALUES(ID)+1;
它是唯一键NAME1重复但是主键不重复,执行的语句是这样的:
INSERT INTO Tupdate() VALUES(1,1)
UPDATE Tupdate
SET NAME1=2+1
WHERE ID=1;
不要认为会插入主键ID=2的记录进去。
总结
上面的三种处理重复值的方法都支持标准的INSERT语法,包括INSERT INTO...VALUES, INSERT INTO ....SET ,INSERT INTO..... SELECT。
关于MySQL 处理插入过程中的主键唯一键重复值的解决方法小编就给大家介绍这么多,希望对大家有所帮助!
您可能感兴趣的文章:MySQL 创建主键,外键和复合主键的语句MySQL 主键与索引的联系与区别分析MySQL中的主键以及设置其自增的用法教程深入Mysql,SqlServer,Oracle主键自动增长的设置详解深入探寻mysql自增列导致主键重复问题的原因sqlserver数据库主键的生成方式小结(sqlserver,mysql)mysql把主键定义为自动增长标识符类型快速理解MySQL中主键与外键的实例教程mysql修改自增长主键int类型为char类型示例MySQL中主键与rowid的使用陷阱总结
mysql
主键
唯一键
重复
相关文章
mysql 8.0.13手动安装教程这篇文章主要为大家详细介绍了mysql 8.0.13手动安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 2019-02-02
MYSQL updatexml()函数报错注入解析这篇文章主要介绍了MYSQL updatexml()函数报错注入解析,并且简单介绍了updatexml函数,具有一定参考价值,需要的朋友可以了解下。 2017-10-10
带你学习MySQL执行计划前面文章,我们学习了 MySQL 慢日志相关内容,当我们筛选得到具体的慢 SQL 后,就要想办法去优化啦。优化 SQL 的第一步应该是读懂 SQL 的执行计划。本篇文章,我们一起来学习下 MySQL explain 执行计划相关知识。 2021-05-05
sql面试题(查看数据中指定几行记录)一个不错的sql面试题,表 table1,主键为 ID,ID为自动编号(ID可能不连续),要求查询第31-40行记录,如何实现呢?感兴趣的朋友参考下 2014-05-05
Mysql数据库错误代码中文详细说明在mysql开发中出现错误代码各种各样,下面我来给大家收集常用见的mysql使用过程中出错代码的中文说明,希望些文章对各位朋友有所帮助了 2013-08-08
MySQL系列之二 多实例配置MySQL多实例就是在一台服务器上同时开启多个不同的服务端口,本文就介绍一下MySQL多实例配置,感兴趣的可以了解一下 2021-07-07
MySQL中文乱码问题解决方案这篇文章主要介绍了MySQL中文乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 2020-09-09
MySQL 整表加密解决方案 keyring_file详解这篇文章主要介绍了MySQL 整表加密解决方案 keyring_file详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 2019-07-07
MySQL安装后默认自带数据库的作用详解这篇文章主要介绍了MySQL安装后默认自带数据库的作用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 2021-04-04
win7下mysql5.7.17安装配置方法图文教程这篇文章主要为大家详细介绍了win7下mysql5.7.17安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2017-03-03
最新评论
大家感兴趣的内容
1mysql安装图解 mysql图文安装教程(详细说明)2Can''''t connect to MySQL serv3windows下MySQL5.6版本安装及配置过程附有截图和4Mysql字符串截取函数SUBSTRING的用法说明5MySQL提示:The server quit withou6MySQL创建用户与授权方法7mysql之TIMESTAMP(时间戳)用法详解8MySQL——修改root密码的4种方法(以windows为9MySQL日期数据类型、时间类型使用总结10MySQL 的CASE WHEN 语句使用说明
最近更新的内容
mysql更新一个表里的字段等于另一个表某字段的值实例Linux下MySQL5.7.18二进制包安装教程(无默认配置文件my_delnmp关闭mysql日志保护硬盘空间的方法MySQL关于ERROR 1290 (HY000)报错解决方法MySQL注入绕开过滤的技巧总结MySQL最基本的命令使用汇总MySQL pt-slave-restart工具的使用简介关于对mysql语句进行监控的方法详解mysql 5.7.13 安装配置方法图文教程(win10)浅谈mysql数据库中的using的用法
常用在线小工具
微信
投稿
脚本任务
在线工具
关注微信公众号
关于我们 -
广告合作 -
联系我们 -
免责声明 -
网站地图 -
投诉建议 -
在线投稿
CopyRight 2006-2021 JB51.Net Inc All Rights Reserved. 脚本之家 版权所有