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

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

от yasmine , в категории: SQL , 7 месяцев назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от edyth , 6 месяцев назад

@yasmine 

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


Например, предположим, что у вас есть таблица mytable с колонкой mycolumn, которая содержит повторяющиеся строки:

1
2
3
4
5
6
7
8
9
+----+-----------+
| id | mycolumn  |
+----+-----------+
|  1 | Apple     |
|  2 | Banana    |
|  3 | Apple     |
|  4 | Orange    |
|  5 | Banana    |
+----+-----------+


Вы можете удалить дубликаты в колонке mycolumn следующим образом:

1
2
3
4
5
6
7
8
DELETE FROM mytable
WHERE id NOT IN (
  SELECT * FROM (
    SELECT MIN(id)
    FROM mytable
    GROUP BY mycolumn
  ) AS t
);


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

1
2
3
4
5
6
7
+----+-----------+
| id | mycolumn  |
+----+-----------+
|  1 | Apple     |
|  2 | Banana    |
|  4 | Orange    |
+----+-----------+


Обратите внимание, что вы должны заменить mytable и mycolumn на соответствующие имена вашей таблицы и колонки.