从MySQL表中的字段中删除重复值

时间:2013-08-06 17:51:56

标签: mysql duplicate-removal duplicate-data

我正在帮助整理查询以删除其中一个表中特定字段中的重复数据。

我有一个名为联系人的表,我需要将其导入另一个系统。新系统要求电子邮件字段是唯一的。我需要一个查询,允许我搜索电子邮件字段并删除任何重复数据或将其设置为“”。

我不想删除行,只删除电子邮件的副本。因此,如果有两个记录包含电子邮件gaz@example.com,那么我希望保留第一个引用,同时删除第二个。

似乎这应该是一件简单的事情,但我正在努力工作我们如何实现它。感谢。

2 个答案:

答案 0 :(得分:3)

您需要使用类似于以下内容的查询:

UPDATE CONTACTS A, CONTACTS B
  SET B.EMAIL=NULL
WHERE A.EMAIL=B.EMAIL
  AND A.KEY_FIELD>B.KEY_FIELD

使用字段引用确定要删除的字段。

答案 1 :(得分:0)

UPDATE CONTACTS SET b.email = ""
FROM CONTACTS a, CONTACTS b
WHERE a.EMAIL = b.EMAIL AND a.ID>b.ID

另一种可能的解决方案

参考:

http://stackoverflow.com/questions/2044467/how-to-update-two-tables-in-one-statement-in-sql-server-2005