我是靠谱客的博主 乐观黄豆,最近开发中收集的这篇文章主要介绍MySQL数据库添加唯一索引——前后问题总结(1),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天由于业务问题,唯一序列号重复提交,在代码层tian添加了redis.incr()方法控制并发,

在数据库的唯一序列号添加唯一索引:

ALTER TABLE  table_nm  ADD UNIQUE (SERIANUMBER);

出现  Duplicate entry '20180903141829852093' for key 'SERIANUMBER'错误,此序列号有重复数据,所以无法添加。

删除重复数据:

首先查询重复数据:

select  serianumber,count(*) from  td_gift_get_his t group by  t.serianumber having count(*)>1;

delete from td_gift_get_his where serianumber in (select  serianumber from  td_gift_get_his t group by  t.serianumber having count(*)>1);但是这个sql会报错:You can't specify target table '表名' for update in FROM clause错误。

将SELECT出的结果再通过中间表SELECT一遍,这样就规避了错误:

delete from table1 where serianumber in(select  d.serianumber from (select  serianumber from  table1 t group by  t.serianumber having count(*)>1) d);

删除掉重复数据后可以添加唯一索引了。注意:in后面只能有一个字段,删除中的查询语句和第一个查询语句不一样的!!!

最后

以上就是乐观黄豆为你收集整理的MySQL数据库添加唯一索引——前后问题总结(1)的全部内容,希望文章能够帮你解决MySQL数据库添加唯一索引——前后问题总结(1)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部