Удаление неотличимых строк

У меня есть таблица с уникальным некластеризованным индексом, и в этом индексе перечислены 4 столбца. Я хочу обновить большое количество строк в таблице. Если я это сделаю, они больше не будут различаться, поэтому обновление не удастся из-за индекса.

Я хочу отключить индекс, а затем удалить самые старые повторяющиеся строки. Вот мой запрос:

SELECT t.itemid, t.fieldid, t.version, updated
FROM dbo.VersionedFields w
inner JOIN
(
    SELECT itemid, fieldid, version, COUNT(*) AS QTY
    FROM dbo.VersionedFields
    GROUP BY itemid, fieldid, version
    HAVING COUNT(*) > 1
) t 
on w.itemid = t.itemid and w.fieldid = t.fieldid and w.version = t.version

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

После объединения отображаются все записи, но все, что я хочу удалить, - это самые старые?

Как это можно сделать?

7
задан Quassnoi 2 August 2011 в 17:42
поделиться