Как удалить дубли из таблицы oracle?

Пользователь

от cayla , в категории: SQL , 2 года назад

Как удалить дубли из таблицы oracle?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от rodger.botsford , 2 года назад

@cayla 

Для удаления дубликатов из таблицы Oracle вы можете воспользоваться следующим запросом:

1
2
3
4
5
6
DELETE FROM your_table t
WHERE t.rowid > (SELECT min(rowid)
                 FROM your_table
                 WHERE column1 = t.column1
                 AND column2 = t.column2
                 ...);


Замените your_table именем своей таблицы, а column1, column2, ... - списком имен колонок, по которым нужно искать дубли. Если у вас есть несколько уникальных ключей, то вы можете добавить их в условие WHERE вместе с остальными колонками.


Обратите внимание, что этот запрос удалит только дубликаты, которые совпадают по всем указанным колонкам. Если вы хотите удалить все дубликаты, независимо от того, совпадают ли они по всем колонкам, то можете использовать следующий запрос:

1
2
3
4
DELETE FROM your_table t
WHERE rowid not in (SELECT min(rowid)
                    FROM your_table
                    GROUP BY column1, column2, ...);


Замените your_table именем своей таблицы, а column1, column2, ... - списком имен колонок, по

Пользователь

от landen.nienow , год назад

@cayla 

которым нужно проверять дубликаты. Этот запрос оставит только одну уникальную запись для каждой комбинации значений в указанных колонках, а все остальные дубликаты будут удалены.


Пожалуйста, обратитесь к документации Oracle или обратитесь к своему администратору базы данных перед удалением данных из таблицы, чтобы удостовериться, что запрос правильно настроен для вашей конкретной ситуации и что вы не удалите неправильные данные.