我有一个大型数据集,我知道它包含许多重复记录。基本上我有关于名字,姓氏,不同地址组成部分和出生日期的数据。
我认为最好的方法是使用出生的姓名和出生日期,如果这些事情匹配,那就是同一个人。可能有很多实例在拼写上有轻微的差异(比如拼写错误的单个字母)或使用名称(即:有些人可能在名字列中有一个中间的首字母),这对我们来说很有用,但是我我不知道如何处理这个问题。
有关于此过程的任何工具或文章吗?这些数据都在MySQL数据库中,我对SQL有基本的熟练程度。
答案 0 :(得分:2)
你可以通过以下方式了解你必须做多少重复数据删除:
select birthDate,last_name,soundex(first_name),count(*)
from table
group by birthDate,last_name,soundex(first_name)
having count(*) >1
这将列出具有相同生日,last_name和类似名字的人。 Soundex()不是很好,但这可以帮助你理解重复数据。
下面的查询将允许您从类似命名人员的表中获取按字母顺序排列的第一个first_name。希望这会给你一些粗略的启动想法//
select birthDate,last_name,soundex(first_name),min(first_name)
from table
group by birthDate,last_name,soundex(first_name)
having count(*) >1
使用第二个查询,您可以删除所有出现的其他名称,方法是使用DELETE,其中名称不在,但假设您愿意保留最低的first_name并删除其余的名称...