我在SQL表中有二十万条记录。该模型有6个字段。认为重复是该表中3个或更多字段与任何其他元组的匹配。我需要在此表的每一行中找到重复项及其编号
答案 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}
是表中列的名称
我怀疑它会很快运行