Use a subquery to identify which records to delete.
This example assumes:
- table named Table1
- primary key named ID
- duplicates defined by identical values in Field2 and Field3.
It keeps the one with the lowest primary key value.
If ID is an AutoNumber, this is most likely to be the oldest one.
DELETE FROM Table1
WHERE Table1.ID <>
(SELECT Min(Dupe.ID) AS MinOfID
FROM Table1 AS Dupe
WHERE Dupe.Field2 = Table1.Field2
AND Dupe.Field3 = Table1.Field3);
If more fields are involved in what defines "duplicate", just add more to
the WHERE clause in the subquery.
If subqueries are new, see:
http://allenbrowne.com/subquery-01.html