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

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

от cayla , в категории: SQL , 5 месяцев назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от rodger.botsford , 5 месяцев назад

@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, ... - списком имен колонок, по