TSQL Удалять дублированные строки только в одном столбце

Возможный дубликат:
SQL - Как удалить повторяющиеся строки?

Пример: это моя таблица:

SiteKey, Name, City

SiteKey автоматически увеличивается, имя отличается, но несколько раз у Сайта будет один город.

Пример:

1, A , CityA
2, B,  CityB
3, C,  CityA
4, D,  CityF

поэтому мне нужно удалить строки 3 и сохранить только строки 1,2,4.

его на SQL 2005 и выше.

спасибо за помощь.

Ответ 1

Вот два способа сделать это.

DELETE t
FROM 
<table> t
WHERE EXISTS 
    (SELECT 1 FROM <table> 
    WHERE t.SiteKey > SiteKey AND t.City = City)


DELETE t
FROM 
<table> t
INNER JOIN <table> t2
ON  t.City = t2.City
AND t.SiteKey > SiteKey

Ответ 2

Это стандартный SQL

DELETE
   mytable
WHERE
    SiteKey NOT IN 
    (
    SELECT
       MIN(SiteKey)
    FROM
       Mytable
    GROUP BY
       City
    ) --Don't need 'KeepMe'

Затем добавьте единственное ограничение

ALTER TABLE MyTable WITH CHECK ADD
   CONSTRAINT UQ_MyTable_City UNIQUE (City)