简述
最近在做一个项目,涉及到需要同步远端数据库的数据到本地,由于误操作导致数据库里面的数据出现重复(冗余)
ps: 由于数据量比较大,最后发现冗余了几万条记录
so 手动删除,呵呵
// 下面将以简单的例子来说明下如何处理这个 case
举个栗子
以mysql数据库为例:在数据库中建立数据表 [prefix_]article
// 冗余表现在aid这列上,部分值出现了重复
另外,主要是考虑到想在aid上建立一个唯一的索引,也实现部分查询优化
id aid
1 1
2 2
3 3
4 3
5 4
6 4
7 4
8 5
9 5
10 6
......
create unique index article_aid_unique on article(aid);
问题分析
在mysql命令行中执行上面的sql语句,将报有重复值在aid列的错误,导致
unique index 无法建立,原因很简单aid列有重复值存在
需要做的是:处理数据表的数据,删除重复的数据只保留一条
问题处理
delete a1 from prefix_article a1, prefix_article a2 where a1.aid = a2.aid and a1.id > a2.id;
delete a1 from prefix_article a1, prefix_article a2 where a1.aid = a2.aid and a1.id < a2.id;
ps
select count (distinct aid) from article;