That makes sense. I'm afraid I did it from memory and had forgotten how fussy Access's Jet/ACE can be when handling DELETE queries. My bad.
As a general rule, deleting must be done on a single table. Often this is done by updating something in the record first, with an UPDATE query that allows more complicated SQL, followed by a separate query that deletes the records that have been so flagged. That could be done in this case.
An alternative, if the table has a PK (or any unique index for that matter) defined, then a subquery can be used that returns the records to be deleted in the WHERE clause of a simpler DELETE query. This one I actually tested first and it works fine (After adding a PK [ID] to the table of course) :
- DELETE
-
FROM [Table1]
-
WHERE ([ID] In(SELECT [tA].[ID]
-
FROM [Table1] AS [tA]
-
INNER JOIN
-
[Table1] AS [tB]
-
ON ([tA].[E1]=[tB].[E2])
-
AND ([tA].[E2]=[tB].[E1])
-
WHERE ([tA].[E2]<[tA].[E1])))