Для выбора дубликатов может использоваться только формат запроса:
SELECT GroupFunction(column1), GroupFunction(column2),...,
COUNT(column1), column1, column2...
FROM our_table
GROUP BY column1, column2, column3...
HAVING COUNT(column1) > 1
Таким образом, правильный запрос в соответствии с другим предложением:
DELETE FROM tablename a
WHERE a.ROWID > ANY (SELECT b.ROWID
FROM tablename b
WHERE a.fieldname = b.fieldname
AND a.fieldname2 = b.fieldname2
AND ....so on.. to identify the duplicate rows....)
Этот запрос сохранит самую старую запись в базе данных для критериев, выбранных в WHERE CLAUSE
.
Oracle Certified Associate (2008)