搜索重复项

时间:2018-06-25 16:18:44

标签: python django postgresql search duplicates

我在SQL表中有二十万条记录。该模型有6个字段。认为重复是该表中3个或更多字段与任何其他元组的匹配。我需要在此表的每一行中找到重复项及其编号

1 个答案:

答案 0 :(得分:1)

类似这样的东西:

select * from (
select
 n.id as needle_id,
 h.id as haystack_id,
 case when n.a = h.a then 1 else 0 end 
 + case when n.b = h.b then 1 else 0 end 
 + case when n.c = h.c then 1 else 0 end
 + case when n.d = h.d then 1 else 0 end
 + case when n.e = h.e then 1 else 0 end
 + case when n.f = h.f then 1 else 0 end as matching_columns_count
from 
 my_table n
join 
 my_table h 
on 
 n.a = h.a 
 or n.b = h.b
 or n.c = h.c
 or n.d = h.d
 or n.e = h.e
 or n.f = h.f
order by 
 matching_columns_count desc
) z where matching_columns_count >= 3

{a,b,c,d,e,f}是表中列的名称

我怀疑它会很快运行