пятница, 21 января 2011 г.

Удаление дублей в таблице без первичных ключей

Задача:
Необходимо одним запросом удалить дублирующийся строки в таблице, записи в которой не имеют уникальных ключей

Решение:
WITH cte
AS
(
SELECT ROW_NUMBER() OVER (PARTITION BY id ORDER BY name) id, * FROM table
)
DELETE FROM cte WHERE id > 1

P.S.: Данное решение возможно только на MS SQL серверах выше 2000 версии