Mysql中 unique列插入重复值该怎么解决呢
当unique列在一个UNIQUE键上插入包含重复值的记录时,我们可以控制MySQL如何处理这种情况:使用IGNORE关键字或者ON DUPLICATE KEY UPDATE子句跳过INSERT、中断操作或者更新旧记录为新值。
mysql> create table menus(id tinyint(4) not null auto_increment, -> label varchar(10) null,url varchar(20) null,unique key(id)); Query OK, 0 rows affected (0.13 sec) mysql> insert into menus(label,url) values('Home','home.html'); Query OK, 1 row affected (0.06 sec) mysql> insert into menus(label,url) values('About us','aboutus.html'); Query OK, 1 row affected (0.05 sec) mysql> insert into menus(label,url) values('Services','services.html'); Query OK, 1 row affected (0.05 sec) mysql> insert into menus(label,url) values('Feedback','feedback.html'); Query OK, 1 row affected (0.05 sec) mysql> select * from menus; +----+----------+---------------+ | id | label | url | +----+----------+---------------+ | 1 | Home | home.html | | 2 | About us | aboutus.html | | 3 | Services | services.html | | 4 | Feedback | feedback.html | +----+----------+---------------+ 4 rows in set (0.00 sec)
如果现在在unique列插入一条违背唯一约束的记录,MySQL会中断操作,提示出错:
mysql> insert into menus(id,label,url) values(4,'Contact us','contactus.html'); ERROR 1062 (23000): Duplicate entry '4' for key 'id'
在前面的INSERT语句添加IGNORE关键字时,如果认为语句违背了唯一约束,MySQL甚至不会尝试去执行这条语句,因此,下面的语句不会返回错误:
mysql> insert ignore into menus(id,label,url) values(4,'Contact us','contactus.html'); Query OK, 0 rows affected (0.00 sec) mysql> select * from menus; +----+----------+---------------+ | id | label | url | +----+----------+---------------+ | 1 | Home | home.html | | 2 | About us | aboutus.html | | 3 | Services | services.html | | 4 | Feedback | feedback.html | +----+----------+---------------+ 4 rows in set (0.00 sec)
当有很多的INSERT语句需要被顺序地执行时,IGNORE关键字就使操作变得很方便。使用它可以保证不管哪一个INSERT包含了重复的键值,MySQL都回跳过它(而不是放弃全部操作)。
在这种情况下,我们还可以通过添加MySQL4.1新增加的ON DUPLICATE KEY UPDATE子句,使MySQL自动把INSERT操作转换为UPDATE操作。这个子句必须具有需要更新的字段列表,这个列表和UPDATE语句使用的列表相同。
mysql> insert into menus(id,label,url) values(4,'Contact us','contactus.html') -> on duplicate key update label='Contact us',url='contactus.html'; Query OK, 2 rows affected (0.05 sec)
在这种情况下,如果MySQL发现表已经包含具有相同唯一键的记录,它会自动更新旧的记录为ON DUPLICATE KEY UPDATE从句中指定的新值:
mysql> select * from menus; +----+------------+----------------+ | id | label | url | +----+------------+----------------+ | 1 | Home | home.html | | 2 | About us | aboutus.html | | 3 | Services | services.html | | 4 | Contact us | contactus.html | +----+------------+----------------+ 4 rows in set (0.01 sec)
以上内容是小编给大家介绍的Mysql中 unique列插入重复值该怎么解决的全部教程,希望对大家有所帮助。
相关文章
- 这篇文章主要介绍了mybatis-plus 处理大数据插入太慢的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-18
- 在debian环境下,彻底解决mysql无法插入和显示中文的问题Linux下Mysql插入中文显示乱码解决方案mysql -uroot -p 回车输入密码进入mysql查看状态如下:默认的是客户端和服务器都用了latin1,所以会乱码。解决方案:mysql>use...2013-10-04
- 当unique列在一个UNIQUE键上插入包含重复值的记录时,我们可以控制MySQL如何处理这种情况:使用IGNORE关键字或者ON DUPLICATE KEY UPDATE子句跳过INSERT、中断操作或者更新旧记录为新值。mysql> create table menus(id t...2015-11-08
- 删除重复数据,只保留一条用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢...2018-09-10
- 这篇文章主要介绍了C#删除字符串中重复字符的方法,涉及C#针对字符串的遍历及移除等操作的技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了c# 用Dictionary实现日志数据批量插入的步骤,帮助大家更好的理解和使用c#中的Dictionary类,感兴趣的朋友可以了解下...2021-02-01
- 这篇文章主要介绍了postgresql 删除重复数据的几种方法小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-05
- 这篇文章主要介绍了C#实现生成所有不重复的组合功能,涉及C#数学运算中组合数运算的相关原理应用操作技巧,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了Asp.Net使用Bulk实现批量插入数据的方法,对于进行asp.net数据库程序设计非常有借鉴价值,需要的朋友可以参考下...2021-09-22
- 这篇文章主要给大家介绍了关于MongoDB CRUD操作中的插入的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MongoDB具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-12-08
- 今天小编就为大家分享一篇C#对Word文档的创建、插入表格、设置样式等操作实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
- 这篇文章主要介绍了Python操控mysql批量插入数据的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-10-27
mysql 选择B表数据插入到A表,同时在A表加一个字段的SQL
mysql 选择B表数据插入到A表,同时在A表加一个字段的SQL...2013-09-23- 在C#编程中,经常会碰到产生随机数的情况,并且是在短时间内产生一组随机数。如果这组随机数中有大量重复的,则达不到我们的要求...2020-06-25
IE下select标签innerHTML插入option的BUG
调用方法 addOption(sltObj, '<option>a</option>'); 代码如下 var sltObj=document.getElementById('xx');//获取select对象,这里只是给个例子,可以按自己习惯来获...2016-09-20sql server中批量插入与更新两种解决方案分享(asp.net)
xml和表值函数的相对复杂些这里简单贴一下bcp和SqlDataAdapter进行批量跟新插入方法,未经整理还望见谅...2021-09-22- 这篇文章主要介绍了如何向一个数组中插入一个1~100的随机数,思路很简单,需要的朋友可以参考下...2020-06-25
- 本文介绍了php使用PDO事务配合表格读取大量数据插入操作实现方法,非常实用,有兴趣的同学快来看看吧。 在处理大量数据的时候,或者同时对几个表操作,而这几个表的操作...2017-07-06
- 这篇文章主要介绍了MyBatis 实现批量插入和删除中双层循环的写法案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-09
- 我们在做能自动生成试卷的考试系统时,常常需要随机生成一组不重复的题目,在.net Framework中提供了一个专门用来产生随机数的类System.Random...2020-06-25