mysql主键唯一键重复插入解决方法_PolarisHuster的博客-CSDN博客


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

mysql主键唯一键重复插入解决方法_PolarisHuster的博客-CSDN博客
mysql主键唯一键重复插入解决方法
PolarisHuster
于 2017-12-20 13:53:03 发布
11110
收藏
分类专栏:
mysql
mysql
专栏收录该内容
79 篇文章
0 订阅
订阅专栏
我们插入数据的时候,有可能碰到重复数据插入的问题,但是这些数据又是不被允许有重复值:
CREATE TABLE stuInfo ( id INT NOT NULL COMMENT '序号', name VARCHAR(20) NOT NULL DEFAULT '' COMMENT '姓名', age INT NOT NULL DEFAULT 0 COMMENT '年龄', PRIMARY KEY (id), UNIQUE KEY uniq_name(name)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生表';
mysql> INSERT INTO stuInfo (id,name,age) VALUES (1,'yoona',20),(1,'xiaosi',25),(2,'aa',24);ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
解决方案:
1. IGNORE
使用ignore当插入的值遇到主键(PRIMARY KEY)或者唯一键(UNIQUE KEY)重复时自动忽略重复的记录行,不影响后面的记录行的插入。
INSERT IGNORE INTO stuInfo (name,birthday,is_deleted) VALUES ('yoona','1990-01-05',0),('aa','1990-01-16',0),('bb','1990-01-17',0);
运行结果:
mysql> INSERT IGNORE INTO stuInfo (id,name,age) VALUES (1,'yoona',20),(1,'xiaosi',25),(2,'aa',24);Query OK, 2 rows affected (0.02 sec)Records: 3 Duplicates: 1 Warnings: 0mysql> select * from stuInfo; +----+-------+-----+| id | name | age |+----+-------+-----+| 1 | yoona | 20 || 2 | aa | 24 |+----+-------+-----+2 rows in set (0.00 sec)
我们可以从运行结果中看出,只有两行受到影响,意思即(1,'yoona',20)数据插入,(1,'xiaosi',25)重复数据自动被忽略,(2,'aa',24)不重复数据继续插入,不会受到重复数据的影响;
2. REPLACE
使用replace当插入的记录遇到主键或者唯一键重复时先删除表中重复的记录行再插入。
mysql> REPLACE INTO stuInfo (name,birthday,is_deleted) VALUES ('yoona','1990-01-15',0),('yoona','1990-02-16',0),('aa','1990-01-13',0);Query OK, 4 rows affected (0.02 sec)Records: 3  Duplicates: 1  Warnings: 0
运行结果:
mysql> select * from stuInfo;                                                   +----+-------+------------+------------+| id | name  | birthday   | is_deleted |+----+-------+------------+------------+| 21 | yoona | 1990-02-16 |          0 || 22 | aa    | 1990-01-13 |          0 |+----+-------+------------+------------+2 rows in set (0.00 sec)
从输出的信息可以看到是4行受影响,说明它是先插入了(‘yoona’,'1990-01-15',0)然后又删除了(‘yoona’,'1990-01-15',0)。
3. ON DUPLICATE KEY UPDATE
当插入的记录遇到主键或者唯一键重复时,会执行后面定义的UPDATE操作。相当于先执行Insert 操作,再根据主键或者唯一键执行update操作。
DROP TABLE  IF EXISTS stuInfo;CREATE TABLE stuInfo (  id INT NOT NULL COMMENT '序号',  name VARCHAR(20) NOT NULL DEFAULT '' COMMENT '姓名',  age INT NOT NULL DEFAULT 0 COMMENT '年龄',  PRIMARY KEY (id),  UNIQUE KEY uniq_name(name)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生表';
在ON DUPLICATE KEY UPDATE后VALUES解释:
VAULES(age)指的是待插入的记录的值
age指得是表的自身值,已插入值。
(1)第一种情形:
#VALUES(age) 待插入值 25INSERT INTO stuInfo (id,name,age) VALUES (1,'yoona',20),(1,'xiaosi',25) ON DUPLICATE KEY UPDATE age = VALUES(age) + 1;
相当于:
INSERT INTO stuInfo (id,name,age) VALUES (1,'yoona',20);UPDATE stuInfo SET age = VALUES(age) + 1WHERE id = 1;
运行结果:
mysql> INSERT INTO stuInfo (id,name,age) VALUES (1,'yoona',20),(1,'xiaosi',25) ON DUPLICATE KEY UPDATE age = VALUES(age) + 1;Query OK, 3 rows affected (0.01 sec)Records: 2 Duplicates: 1 Warnings: 0mysql> select * from stuInfo; +----+-------+-----+| id | name | age |+----+-------+-----+| 1 | yoona | 26 |+----+-------+-----+1 row in set (0.00 sec)
(2)第二种情形:
#age 已插入值 20INSERT INTO stuInfo (id,name,age) VALUES (1,'yoona',20),(1,'xiaosi',25) ON DUPLICATE KEY UPDATE age = age + 1;
相当于:
INSERT INTO stuInfo (id,name,age) VALUES (1,'yoona',20);UPDATE stuInfo SET age = age + 1WHERE id = 1;
运行结果:
mysql> INSERT INTO stuInfo (id,name,age) VALUES (1,'yoona',20),(1,'xiaosi',25) ON DUPLICATE KEY UPDATE age = age + 1;Query OK, 3 rows affected (0.02 sec)Records: 2 Duplicates: 1 Warnings: 0mysql> select * from stuInfo; +----+-------+-----+| id | name | age |+----+-------+-----+| 1 | yoona | 21 |+----+-------+-----+1 row in set (0.00 sec)
如果遇到重复插入的数据的情形,ON DUPLICATE KEY UPDATE用来对已插入的数据进行修改,可以使用获取重复已插入数据(直接使用字段名称),也可以获取重复待插入数据(values(字段名称))。我们不会对重复待插入数据进行插入操作。
重复已插入数据:上例中的(1,'yoona',20)
重复待插入数据:上例中的(1,'yoona',25)
转载自:http://blog.csdn.net/SunnyYoona/article/details/51346593
PolarisHuster
关注
关注
点赞
收藏
评论
mysql主键唯一键重复插入解决方法
mysql主键唯一键重复插入解决方法
复制链接
扫一扫
专栏目录
MySQL 处理插入过程中的主键唯一键重复值的解决方法
12-15
本篇文章主要介绍在插入数据到表中遇到键重复避免插入重复值的处理方法,主要涉及到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;
正常的插入如果插入的记录中存在键重复会报错,
mysql 导入主键冲突_MySQL 处理插入过程中的主键唯一键重复值的解决方法
weixin_35213963的博客
01-17
307
本篇文章主要介绍在插入数据到表中遇到键重复避免插入重复值的处理方法,主要涉及到IGNORE,ON DUPLICATE KEY UPDATE,REPLACE;接下来就分别看看这三种方式的处理办法。IGNORE使用ignore当插入的值遇到主键(PRIMARY KEY)或者唯一键(UNIQUE KEY)重复时自动忽略重复的记录行,不影响后面的记录行的插入,创建测试表?正常的插入如果插入的记录中存在键重...
参与评论
您还未登录,请先
登录
后发表或查看评论
Mysql批量插入数据时如何解决重复问题
最新发布
王文萱的博客
11-08
1028
Mysql批量插入数据时如何解决重复问题
mysql自增主键和mybatis自增主键不一致问题(已解决):
qq_43473129的博客
09-28
832
mysql自增主键和mybatis自增主键不一致问题(已解决):
在插入数据前,先进行查询主键
<insert id="insertSelective">
<selectKey keyProperty="zxywzj" resultType="Integer">
select LAST_INSERT_ID()
</selectKey>
insert into tb_name
(<include refid="i
[MySQL日记]主键唯一键重复插入解决方法
SmartSi
05-08
4088
我们插入数据的时候,有可能碰到重复数据插入的问题,但是这些数据又是不被允许有重复值:
CREATE TABLE stuInfo ( id INT NOT NULL COMMENT '序号', name VARCHAR(20) NOT NULL DEFAULT '' COMMENT '姓名', age INT NOT NULL DEFAULT 0 COMMENT '年龄', PRI
【MySQL】中主键(primary key)和唯一键(unique)区别
热门推荐
offer!
04-20
2万+
保证唯一性 是否允许为空 一个表中可以有多少个 能否组合
primary key √ × ...
若表中有重复的主键或数据继续插入解决方案
u014683488的专栏
06-04
1159
使用数据库插入语句往表中插入数据,若需要插入表中的数据(或者数据的主键)如果已经在表中存在,因为id=3的主键在表中已经存在,所以强行执行SQL插入的话程序会报错.
解决方法:
https://blog.csdn.net/a772304419/article/details/79669614
...
mysql 设计两个主键都不可重复_每天一道面试题:mysql(三)
weixin_33989935的博客
01-30
501
面试必遇到的数据库事务隔离级别直接进入主题,开淦了解事务隔离级别之前,首先回忆一下第一期数据库锁https://mp.weixin.qq.com/s/qx-gE3LH__LTVDTFGIPQUg1、什么是事务?事务是一系列的操作,他们要符合ACID特性.最常见的理解就是:事务中的操作要么全部成功,要么全部失败.但是只是这样还不够的。2、ACID是什么?A=Atomicity原子性,就是上...
详解MySQL主键唯一键重复插入解决方法
只管努力,莫问前程
01-13
2064
转载:https://www.jb51.net/article/222079.htm
目录
解决方案:
1. IGNORE
2. REPLACE
3. ON DUPLICATE KEY UPDATE
我们插入数据的时候,有可能碰到重复数据插入的问题,但是这些数据又是不被允许有重复值:
CREATE TABLE stuInfo (
id INT NOT NULL COMMENT '序号',
name VARCHAR(20) NOT NULL DEFAULT '' COM
mysql主键可以重复吗_mysql 处理主键重复
weixin_29366307的博客
02-27
5633
select * from stock;-- 1、批量插入,忽略主键重复的数据insert IGNORE intoinsert IGNORE into `stock` (`id`,`name`,`count`,`sale`,`version`)VALUES('1','phone','200','0','0'),('2','phone2','200','0','0'),('3','phone3','...
mysql主键与唯一约束
qq_46093575的博客
05-11
484
一、约束
确保数据库数据满足特定的商业规则。在mysql中,约束主要包括:not null, unique, primary key ,foreign,check,共五种。
1.primary key(主键)
字段名 字段类型 primary key 用于唯一的标示表行的数据,当定义主键约束后,该列不能重复。
-- 主键
CREATE TABLE db23(
id INT PRIMARY KEY, -- 主键
`name`VARCHAR(32),
email VARCHAR(32)
);..
mysql设置唯一键1062错误,#1062-尝试添加唯一键(MySQL)时,键'unique_id'的条目重复...
weixin_34216614的博客
01-19
429
I've got an error on MySQL while trying to add a UNIQUE KEY. Here's what I'm trying to do. I've got a column called 'unique_id' which is VARCHAR(100). There are no indexes defined on the table. I'm ge...
mysql主键与唯一约束的区别_MySQL主键与唯一约束区别
weixin_29599033的博客
01-20
727
主键与唯一约束区别在面试有可能会被问到。可以从以下几个方面对比一下。1、保证唯一性2、是否允许为空3、一个表可以有多少个4、是否允许组合保证唯一性两者都保证字段值的唯一性。建一个学生表create table student(id int PRIMARY key, #主键name VARCHAR(20) NOT NULL,#非空seat int UNIQUE#唯一)id是主键,seat座位号唯一。...
mysql个人学习笔记——主键、唯一键
weixin_38427857的博客
03-26
1600
在总结主键和唯一键之前,先简单介绍一下索引。
索引
对目标数据单独建立一个索引文件,使得对这些数据的查询可以通过索引文件进行快速查询。
意义:
1、提高查询效率
2、约束数据的有效性(唯一性[主键、唯一键]等)
但是由于索引文件可能比数据本身还大,使用索引需综合考虑内存和查询效率问题。
索引种类:
1、主键索引:primary key
2、唯一键索引:unique key
3、全文索引:fullt...
MySQL主键唯一键重复插入解决方法
学亮编程手记
03-23
5876
我们插入数据的时候,有可能碰到重复数据插入的问题,但是这些数据又是不被允许有重复值:
CREATE TABLE stuInfo (
id INT NOT NULL COMMENT '序号',
name VARCHAR(20) NOT NULL DEFAULT '' COMMENT '姓名',
age INT NOT NULL DEFAULT 0 COM
sqlserver 当删除表中的所有记录后插入记录时提示主键不唯一的解决方法
Elvis技术小屋
06-23
1220
sqlserver 当删除表中的所有记录后插入记录时提示主键不唯一的解决方法:
truncate table WeiShopDB_empty.dbo.i_EntSubInfoNew 执行该语句则清空该表的原有数据
KETTLE 主键不唯一解决方法
kodmoqn的博客
10-04
271
KETTLE 主键不唯一解决方法
mysql导出数据主键不一致_主键不唯一;mysqldump导出文件恢复;
weixin_39750190的博客
01-19
364
一、背景以前使用SQL Server进行表分区的时候就碰到很多关于唯一索引的问题:Step8:SQL Server 当表分区遇上唯一约束,没想到在MySQL的分区中一样会遇到这样的问题:MySQL表分区实战。今天我们来了解MySQL唯一索引的一些知识:包括如何创建,如何批量插入,还有一些技巧上SQL;这些问题的根源在什么地方?有什么共同点?MySQL中也有分区对齐的概念?唯一索引是在很多系统中都会...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:编程工作室
设计师:CSDN官方博客
返回首页
PolarisHuster
CSDN认证博客专家
CSDN认证企业博客
码龄14年
Java领域优质创作者
537
原创
3645
周排名
803
总排名
329万+
访问
等级
2万+
积分
2万+
粉丝
765
获赞
478
评论
2179
收藏
私信
关注
热门文章
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin'
105744
Ubuntu20.04代理设置
75429
fastjson设置指定日期属性的格式化
62381
The web application [] appears to have started a thread named [Thread-
53413
write javaBean error, fastjson version 1.2.47, class
44696
分类专栏
thingsboard
14篇
kubernetes
11篇
linux
57篇
nacos
6篇
测试工具
6篇
大数据
26篇
cassandra
9篇
tdengine
2篇
arthas
2篇
kong
1篇
反应式编程
3篇
fastjson
7篇
程序猿的自我修养
4篇
spring
104篇
java
139篇
前端
79篇
其他
20篇
dubbo
14篇
poi
11篇
tomcat
11篇
nginx
12篇
maven
20篇
fiddler
2篇
fastjson
14篇
网络基础
23篇
mysql
79篇
非技术类
13篇
mybatis
10篇
activiti
6篇
搜索
23篇
开发工具
24篇
微信
2篇
网络安全
4篇
数据库
9篇
docker
25篇
分布式系统
7篇
redis
15篇
slf4j
2篇
MQ
25篇
软件基础
3篇
git
4篇
开源软件
1篇
elk
24篇
oss
1篇
多媒体
1篇
IT职业技能
3篇
spring cloud
18篇
微服务
6篇
架构
7篇
运维相关
24篇
canal
3篇
算法
8篇
go
1篇
mongodb
1篇
进阶
5篇
zookeeper
1篇
最新评论
echarts tooltip trigger: 'axis'没有作用
小猿L:
请问是怎么解决的呢,xAxis的data跟yAxis的data一一对应啊,数组类型,怎么赋值呢
微信公众号关注回调
新秀Code:
为啥我关注后并没有回调数据唉
Mockito.when抛出NullPointerException
陈淀薄发:
可以解决
thingsboard-gateway从thingsboard获取拓展配置源码分析
qq_38212332:
官网的网管都改成python,据说是为了能兼容到嵌入式
nacos2.x 支持postgresql与mysql
shineJo:
我也是这个问题,老哥解决没?
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
thingsboard设备状态更新可能导致的不一致性问腿
Protobuf3简单使用
kubesphere无法更新项目
2022年29篇
2021年101篇
2020年127篇
2019年198篇
2018年118篇
2017年212篇
2016年77篇
2015年41篇
2014年2篇
目录
目录
分类专栏
thingsboard
14篇
kubernetes
11篇
linux
57篇
nacos
6篇
测试工具
6篇
大数据
26篇
cassandra
9篇
tdengine
2篇
arthas
2篇
kong
1篇
反应式编程
3篇
fastjson
7篇
程序猿的自我修养
4篇
spring
104篇
java
139篇
前端
79篇
其他
20篇
dubbo
14篇
poi
11篇
tomcat
11篇
nginx
12篇
maven
20篇
fiddler
2篇
fastjson
14篇
网络基础
23篇
mysql
79篇
非技术类
13篇
mybatis
10篇
activiti
6篇
搜索
23篇
开发工具
24篇
微信
2篇
网络安全
4篇
数据库
9篇
docker
25篇
分布式系统
7篇
redis
15篇
slf4j
2篇
MQ
25篇
软件基础
3篇
git
4篇
开源软件
1篇
elk
24篇
oss
1篇
多媒体
1篇
IT职业技能
3篇
spring cloud
18篇
微服务
6篇
架构
7篇
运维相关
24篇
canal
3篇
算法
8篇
go
1篇
mongodb
1篇
进阶
5篇
zookeeper
1篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值