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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от terrence , 2 года назад

@chloe.keebler 

Чтобы удалить дубликаты в Oracle, вы можете использовать следующий запрос:

1
2
3
4
5
DELETE FROM table_name t1
WHERE t1.rowid > (SELECT min(t2.rowid) FROM table_name t2
                  WHERE t1.column1 = t2.column1
                    AND t1.column2 = t2.column2
                    AND ...);


В этом запросе table_name - это название таблицы, в которой хотите удалить дубликаты, а column1, column2, ... - это названия столбцов, по которым вы хотите идентифицировать дубликаты. Этот запрос удалит все строки, которые имеют одинаковые значения в указанных столбцах, оставив только один уникальный ряд.


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

1
2
3
4
5
DELETE FROM table_name t1
WHERE t1.rowid > (SELECT min(t2.rowid) FROM table_name t2
                  WHERE t1.column1 = t2.column1
                    AND t1.column2 = t2.column2
                    AND ...);


Этот запрос удалит только один ряд из каждой группы дубликатов, оставив остальн

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

от ally , год назад

@chloe.keebler 

ые строки без изменений. Не забудьте заменить table_name, column1, column2 и т. д. соответствующими названиями вашей таблицы и столбцов.