保留一条记录时删除重复记录

时间:2012-02-02 15:59:29

标签: sql sql-server-2005

我有一张电话记录表:

ID  int (Primary Key)
company varchar 
dbaname varchar 
coaddress   varchar 
cocity  varchar 
costate varchar 
cozip   varchar 
phonenum    varchar 

我想要完成的是删除所有重复的电话号码(phonenum字段),但保留一次出现。

在进行重复检查时,我发现表格中有超过41000个重复的电话号码(总共约141000个)。

我将如何根据电话号码进行此操作?

1 个答案:

答案 0 :(得分:1)

假设您只想保留最新记录:

DELETE  yourTable
FROM    yourTable T
        LEFT JOIN
        (   SELECT  MAX(ID) [ID]
            FROM    yourTable
            GROUP BY Phonenum
        ) MaxT
            ON MaxT.ID = T.ID
WHERE   MaxT.ID IS NULL

我肯定会将您要删除的内容存档到另一个表格中,因为无法保证您在未经手动检查或向Delete语句添加其他条件的情况下删除了正确的记录。