#mysql #sql #duplicates #sql-delete
#mysql #sql #дубликаты #sql-удалить
Вопрос:
У меня есть таблица со столбцом serial_number
, который повторяется несколько раз. Как мне удалить всю строку, кроме первого дубликата? Следующим образом я могу выбрать все дубликаты. Но не удается удалить.
SELECT serial_number, COUNT(*) FROM trademark_merge GROUP BY serial_number HAVING COUNT(*) > 1
Комментарии:
1. Кстати, часто быстрее создать новую таблицу, сохранив только те строки, которые вы хотите сохранить.
Ответ №1:
Предполагая, что первичный ключ вашей таблицы id
, вы можете сформулировать это как запрос на удаление / объединение, например:
delete tm
from trademark_merge tm
inner join (
select serial_number, min(id) id
from trademark_merge
group by serial_number
) tm1 on tm.serial_number = tm1.serial_number and tm.id > tm1.id