Удаление повторяющихся строк из таблицы в Oracle - PullRequest
126 голосов
/ 09 февраля 2009

Я тестирую что-то в Oracle и заполнил таблицу некоторыми примерами данных, но в процессе этого я случайно загрузил дублирующиеся записи, поэтому теперь я не могу создать первичный ключ, используя некоторые столбцы.

Как удалить все повторяющиеся строки и оставить только одну из них?

Ответы [ 21 ]

0 голосов
/ 11 марта 2015

Для лучшей производительности вот что я написал:
(см. план выполнения)

DELETE FROM your_table
WHERE rowid IN 
  (select t1.rowid from your_table  t1
      LEFT OUTER JOIN (
      SELECT MIN(rowid) as rowid, column1,column2, column3
      FROM your_table 
      GROUP BY column1, column2, column3
  )  co1 ON (t1.rowid = co1.rowid)
  WHERE co1.rowid IS NULL
);
...