概述
今天由于业务问题,唯一序列号重复提交,在代码层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)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复