Удалить все дубликаты, кроме первого mysql

#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