Как удалить дублирующуюся запись с помощью TSQL? - PullRequest
1 голос
/ 17 августа 2011

Мне нужно избавиться от дубликатов со своего стола. Я получил дубликаты, как это: -

SELECT col1
FROM table_01
GROUP BY col1
HAVING ( COUNT(col1) > 1)

table_01 имеет другой столбец 'col2' , который является nvarchar , который содержит дату и время. Этот col2 также имеет NULL . Теперь, как можно сохранить последнюю запись (по дате) и удалить другие дубликаты. Я понятия не имею? Pl. помощь.

Ответы [ 2 ]

3 голосов
/ 17 августа 2011
;WITH x AS 
(
  SELECT col1, 
    rn = ROW_NUMBER() OVER
    (
      PARTITION BY col1 
      ORDER BY CONVERT(DATETIME, COALESCE(col2, '19000101')) DESC
    )
  FROM table_01
)
DELETE x WHERE rn > 1;
1 голос
/ 17 августа 2011

Магия коррелированного подзапроса. Вы сказали, что две записи имеют другое значение для другого столбца, который содержит даты, и вы хотите удалить более старую запись?

DELETE FROM tablea
WHERE tablea.dateentered < (SELECT MAX(i.dateentered)
                            FROM tablea i
                            WHERE tablea.id = i.id) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...