La cuestión es si quieres dejar 1 de los registros duplicados o borrar las dos ocurrencias
En el caso de borrar todo:
Código SQL
[-]
DELETE FROM TABLA
WHERE ID IN
(
SELECT ID FROM TABLA
GROUP BY ID
HAVING COUNT(*) >= 2
)
Si quieres dejar uno:
Código SQL
[-]
DELETE FROM TABLA
WHERE RDB$DB_KEY IN
(
SELECT FIRST 1 RDB$DB_KEY FROM TABLA
GROUP BY ID
HAVING COUNT(*) >= 2
)
RDB$DB_KEY es un campo "de sistema" que identifica a cada registro. Es un CHAR(8) para las tablas.
Si es una vista que une dos tablas es un CHAR(16). Si une 3 tablas es CHAR(24), y así sucesivamente.