@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
, ... - списком имен колонок, по
@cayla
которым нужно проверять дубликаты. Этот запрос оставит только одну уникальную запись для каждой комбинации значений в указанных колонках, а все остальные дубликаты будут удалены.
Пожалуйста, обратитесь к документации Oracle или обратитесь к своему администратору базы данных перед удалением данных из таблицы, чтобы удостовериться, что запрос правильно настроен для вашей конкретной ситуации и что вы не удалите неправильные данные.