Tak, zakładając, że masz pole unikalnego identyfikatora, możesz usunąć wszystkie rekordy, które są takie same z wyjątkiem identyfikatora, ale nie mają „minimalnego identyfikatora” dla swojej grupy wartości.
Przykładowe zapytanie:
DELETE FROM Table
WHERE ID NOT IN
(
SELECT MIN(ID)
FROM Table
GROUP BY Field1, Field2, Field3, ...
)
Uwagi:
- Swobodnie wybrałem „Tabela” i „ID” jako reprezentatywne nazwy
- Lista pól („Pole1, Pole2,...”) powinna zawierać wszystkie pola z wyjątkiem identyfikatora
- To może być powolne zapytanie w zależności od liczby pól i wierszy, jednak spodziewam się, że byłoby w porządku w porównaniu z alternatywami
EDYCJA:W przypadku, gdy nie masz unikalnego indeksu, zalecam po prostu dodanie automatycznego przyrostowego unikalnego indeksu. Głównie dlatego, że jest to dobry projekt, ale także dlatego, że pozwoli Ci uruchomić powyższe zapytanie.