MySQL:从MySQL表中删除重复行的最安全方法是什么?

MySQL:从MySQL表中删除重复行的最安全方法是什么?,mysql,duplicate-removal,Mysql,Duplicate Removal,我有一张MySQL表。它包含我们从数据源获得的邮寄地址。但是邮寄地址没有客户记录,所以我没有一种简单的方法来匹配客户记录作为键,以查看它是否已经存在于主表中。因此,我决定将新的每日数据提要添加到主表中,然后删除重复项 删除重复项的最安全方法是什么?显然,我想忽略ID列字段。但如何对以下字段执行此操作: company_name contact_name address1 address2 address3 city state zipcode phone_number email_address

我有一张MySQL表。它包含我们从数据源获得的邮寄地址。但是邮寄地址没有客户记录,所以我没有一种简单的方法来匹配客户记录作为键,以查看它是否已经存在于主表中。因此,我决定将新的每日数据提要添加到主表中,然后删除重复项

删除重复项的最安全方法是什么?显然,我想忽略ID列字段。但如何对以下字段执行此操作:

company_name
contact_name
address1
address2
address3
city
state
zipcode
phone_number
email_address
如果我重建MySQL表以包含具有唯一键的ALTER TABLE,那会安全吗?例如:

ALTER TABLE people ADD UNIQUE KEY (company_name,contact_name,address1,address2,address3,city,state,zipcode,phone_number,email_address)
上述方法能否安全地防止重复记录被插入


谢谢

这是您可以使用的最简单的查询 根据您的要求选择最大值或最小值

DELETE
FROM MyTable
WHERE ID NOT IN
(
SELECT MAX(ID)
FROM MyTable
GROUP BY DuplicateColumn1, DuplicateColumn2, DuplicateColumn3)
谢谢

从测试a中删除a 左连接 选择MINid作为id、公司名称、联系人名称、地址1、地址2、地址3、城市、州、邮编、电话号码、电子邮件地址 从测试 按公司名称、联系人名称、地址1、地址2、地址3、城市、州、邮编、电话号码、电子邮件地址分组 a.id=b.id和a.company\u name=b.company\u name和a.contact\u name=b.contact\u name和a.address1=b.address1和a.address2=b.address2和a.address3=b.address3和a.city=b.city和a.state=b.state和a.zipcode=b.zipcode和a.phone\u number=b.phone\u号码和a.email\u地址=b.email\u地址
如果b.id为空

您能提供更多的样本记录吗?您能定义什么是重复吗?尝试此操作您可以使用SELECT DISTINCTStatement@bksiAduplicate是一行,其中包含我提到的字段/列,每个字段/列都包含完全相同的数据。请查看我使用ALTER TABLE PEOPES ADD UNIQUE KEY添加的示例。我很想知道你的想法。谢谢