什么是快速SQL的示例,以在具有数十万条记录的数据集中获取重复项.我通常使用类似的东西:
SELECT afield1, afield2 FROM afile a WHERE 1 < (SELECT count(afield1) FROM afile b WHERE a.afield1 = b.afield1);
但这很慢.
这是更直接的方式:
select afield1,count(afield1) from atable group by afield1 having count(afield1) > 1
你可以尝试:
select afield1, afield2 from afile a where afield1 in ( select afield1 from afile group by afield1 having count(*) > 1 );
上周提出了一个类似的问题.那里有一些很好的答案.
用于查找重复条目的SQL(在组内)
在该问题中,OP对表(文件)中的所有列(字段)感兴趣,但如果它们具有相同的键值(afield1),则行属于同一组.
有三种答案:
where子句中的子查询,就像这里的一些其他答案一样.
表和作为表格查看的组之间的内部联接(我的答案)
和分析查询(对我来说是新的).
顺便说一句,如果有人想要删除重复项,我使用了这个:
delete from MyTable where MyTableID in ( select max(MyTableID) from MyTable group by Thing1, Thing2, Thing3 having count(*) > 1 )