当前位置:  开发笔记 > 数据库 > 正文

最快的"获取重复"SQL脚本

如何解决《最快的"获取重复"SQL脚本》经验,为你挑选了4个好方法。

什么是快速SQL的示例,以在具有数十万条记录的数据集中获取重复项.我通常使用类似的东西:

SELECT afield1, afield2 FROM afile a 
WHERE 1 < (SELECT count(afield1) FROM afile b WHERE a.afield1 = b.afield1);

但这很慢.



1> Vinko Vrsalo..:

这是更直接的方式:

select afield1,count(afield1) from atable 
group by afield1 having count(afield1) > 1



2> Tony Andrews..:

你可以尝试:

select afield1, afield2 from afile a
where afield1 in
( select afield1
  from afile
  group by afield1
  having count(*) > 1
);


这实际上是我的首选方式,因为您可以返回表的所有列.

3> Walter Mitty..:

上周提出了一个类似的问题.那里有一些很好的答案.

用于查找重复条目的SQL(在组内)

在该问题中,OP对表(文件)中的所有列(字段)感兴趣,但如果它们具有相同的键值(afield1),则行属于同一组.

有三种答案:

where子句中的子查询,就像这里的一些其他答案一样.

表和作为表格查看的组之间的内部联接(我的答案)

和分析查询(对我来说是新的).



4> Magnus Smith..:

顺便说一句,如果有人想要删除重复项,我使用了这个:

delete from MyTable where MyTableID in (
  select max(MyTableID)
  from MyTable
  group by Thing1, Thing2, Thing3
  having count(*) > 1
)

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有