Это то, что я обычно использую:
delete from your_table a
where a.rowid > (select min(b.rowid)
from your_table b
where a.join_column = b.join_column
);
Ваш вариант не тот плохой ; он работает нормально, когда вы хотите сохранить часть набора данных таблицы и удалить остальные, поэтому быстрее «сохранить» желаемые значения, усечь таблицу (что быстрее, чем операция удаления) и переместить сохраненные строки назад.
Было бы легче угадать , если бы интервьюер сказал вам, что не так с вашим ответом.
Кроме того, если вам интересно, посмотрите еще несколько способов удаления дубликаты на сайте OraFAQ .