Удалить дубликаты записей при сохранении одной записи - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть таблица телефонных записей как таковая:

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

Что я хочу сделать, это удалить все дубликаты телефонных номеров (поле фоненума), но сохранить один случай.

При выполнении повторной проверки я вижу, что в таблице более 41000 дублированных телефонных номеров (всего около 141000).

Как бы я поступил так, основываясь на номере телефона?

1 Ответ

1 голос
/ 02 февраля 2012

Если вы хотите сохранить только самую последнюю запись:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...