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

В этом посте мы покажем вам, как удалить повторяющиеся данные в ваших базах данных MySQL.

С одного взгляда

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

  1. Сделайте резервную копию таблицы!
  2. Найдите повторяющиеся строки
  3. Удалить повторяющиеся строки

Сделайте резервную копию своей таблицы

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

Найдите повторяющиеся строки

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

Вы можете использовать DISTINCT в своем операторе SELECT, чтобы найти уникальные комбинации данных в вашей таблице.

SELECT DISTINCT name, owner, species, sex FROM pet

Другой способ — добавить GROUP BY, назвав столбцы, которые вы выбираете в своем запросе. Это позволяет выбирать уникальные комбинации данных.

SELECT name, owner, species, sex FROM pet GROUP BY (name);

Удалить повторяющиеся строки

Теперь, когда вы знаете, какие строки вам нужно сохранить (и, соответственно, строки, которые вам нужно удалить), вы можете продолжить и написать оператор, который удалит ваши повторяющиеся строки.

В этом конкретном случае наш скрипт будет

  1. Создать временную таблицу
  2. Переместите уникальные данные, которые мы определили на предыдущем шаге, во временную таблицу.
  3. Удалить исходную таблицу
  4. Переименуйте временную таблицу именем исходной таблицы.
CREATE TABLE temporaryTable
SELECT name, owner, species, sex FROM pet GROUP BY (name);
DROP TABLE pet;
ALTER TABLE temporaryTable RENAME TO pet;

Выводы

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