Jest to jeden z wielu powodów, dla których wszystkie tabele powinny mieć klucz podstawowy (niekoniecznie numer ID lub IDENTITY, ale kombinację jednej lub więcej kolumn, która jednoznacznie identyfikuje wiersz i której unikalność jest wymuszana w bazie danych).
Twój najlepszy zakład jest taki:
SELECT field1, field2, field3, count(*)
INTO temp_table1
FROM table1
GROUP BY field1, field2, field3 having count(*) > 1
DELETE T1
FROM table1 T1
INNER JOIN (SELECT field1, field2, field3
FROM table1
GROUP BY field1, field2, field3 having count(*) > 1) SQ ON
SQ.field1 = T1.field1 AND
SQ.field2 = T1.field2 AND
SQ.field3 = T1.field3
INSERT INTO table1 (field1, field2, field3)
SELECT field1, field2, field3
FROM temp_table1
DROP TABLE temp_table1