Да, ако приемем, че имате уникално поле за идентификатор, можете да изтриете всички записи, които са еднакви с изключение на идентификатора, но нямат "минималния идентификатор" за тяхната група стойности.
Примерна заявка:
DELETE FROM Table
WHERE ID NOT IN
(
SELECT MIN(ID)
FROM Table
GROUP BY Field1, Field2, Field3, ...
)
Бележки:
- Свободно избрах „Таблица“ и „ИД“ като представителни имена
- Списъкът с полета („Поле1, Поле2, ...“) трябва да включва всички полета с изключение на ИД
- Това може да е бавна заявка в зависимост от броя на полетата и редовете, но очаквам, че ще е наред в сравнение с алтернативите.
РЕДАКТИРАНЕ:В случай, че нямате уникален индекс, моята препоръка е просто да добавите автоматично нарастващ уникален индекс. Основно защото е с добър дизайн, но и защото ще ви позволи да изпълните заявката по-горе.