У меня есть таблица с уникальным некластеризованным индексом, и в этом индексе перечислены 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
Выбор внутри внутреннего соединения возвращает нужное количество записей, которые мы хотим удалить, но группирует их, так что на самом деле их количество вдвое больше.
После объединения отображаются все записи, но все, что я хочу удалить, - это самые старые?
Как это можно сделать?