我正在帮助整理查询以删除其中一个表中特定字段中的重复数据。
我有一个名为联系人的表,我需要将其导入另一个系统。新系统要求电子邮件字段是唯一的。我需要一个查询,允许我搜索电子邮件字段并删除任何重复数据或将其设置为“”。
我不想删除行,只删除电子邮件的副本。因此,如果有两个记录包含电子邮件gaz@example.com,那么我希望保留第一个引用,同时删除第二个。
似乎这应该是一件简单的事情,但我正在努力工作我们如何实现它。感谢。
答案 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