Как удалить повторяющиеся строки в mysql?

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

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

Как удалить повторяющиеся строки в mysql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

P

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

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

@jeremy_larkin 

Добрый день!

Для того чтобы удалить из таблицы дубли строк необходимо выполнить скрипт

1
2
3
4
5
6
7
CREATE TEMPORARY TABLE tmp_tab AS SELECT DISTINCT * FROM your_table;

DELETE FROM your_table;

INSERT INTO your_table SELECT * FROM tmp_tab;

DROP TABLE tmp_tab;

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

от hobart.rath , год назад

@jeremy_larkin 

Чтобы удалить повторяющиеся строки в MySQL, можно использовать оператор DISTINCT в запросе SELECT для выборки уникальных строк, а затем использовать оператор DELETE для удаления всех строк, которые не являются уникальными.


Например, предположим, что у нас есть таблица mytable с колонками id, name, age, email, и мы хотим удалить все строки, которые имеют одинаковые значения в колонках name, age, и email. Можно выполнить следующий запрос:

1
2
3
4
5
6
7
8
9
DELETE FROM mytable
WHERE id NOT IN (
  SELECT min_id FROM (
    SELECT MIN(id) AS min_id
    FROM mytable
    GROUP BY name, age, email
    HAVING COUNT(*) > 1
  ) AS x
);


Этот запрос выбирает уникальные строки в таблице, группируя их по колонкам name, age, и email, и находя строки, которые повторяются. Затем он выбирает минимальный id для каждой группы повторяющихся строк и сохраняет их во временной таблице. Наконец, он удаляет все строки, кроме тех, чьи id находятся во временной таблице.


Обратите внимание, что перед выполнением любых операций удаления всегда рекомендуется создать резервную копию таблицы, чтобы в случае неожиданных проблем можно было восстановить данные.