В большинстве случаев вам не нужны повторяющиеся строки в вашей базе данных. Лучше всего настроить процесс вставки так, чтобы данные, которые уже есть в ваших таблицах, не добавлялись снова, но что, если эта лошадь покинула сарай, а у вас уже есть дубликаты?
В этом посте мы покажем вам, как удалить повторяющиеся данные в ваших базах данных MySQL.
С одного взгляда
Есть всего несколько основных шагов для удаления повторяющихся данных из вашей таблицы:
- Сделайте резервную копию таблицы!
- Найдите повторяющиеся строки
- Удалить повторяющиеся строки
Сделайте резервную копию своей таблицы
Как и всегда, когда вы вносите постоянные изменения в свою таблицу, мы настоятельно рекомендуем сделать резервную копию ваших данных, прежде чем начать!
Найдите повторяющиеся строки
Первое, что вам нужно сделать, это определить повторяющиеся строки в вашей таблице. Вообще говоря, вы можете сделать это, используя любой из этих методов:
Вы можете использовать DISTINCT в своем операторе SELECT, чтобы найти уникальные комбинации данных в вашей таблице.
SELECT DISTINCT name, owner, species, sex FROM pet
Другой способ — добавить GROUP BY, назвав столбцы, которые вы выбираете в своем запросе. Это позволяет выбирать уникальные комбинации данных.
SELECT name, owner, species, sex FROM pet GROUP BY (name);
Удалить повторяющиеся строки
Теперь, когда вы знаете, какие строки вам нужно сохранить (и, соответственно, строки, которые вам нужно удалить), вы можете продолжить и написать оператор, который удалит ваши повторяющиеся строки.
В этом конкретном случае наш скрипт будет
- Создать временную таблицу
- Переместите уникальные данные, которые мы определили на предыдущем шаге, во временную таблицу.
- Удалить исходную таблицу
- Переименуйте временную таблицу именем исходной таблицы.
CREATE TABLE temporaryTable SELECT name, owner, species, sex FROM pet GROUP BY (name); DROP TABLE pet; ALTER TABLE temporaryTable RENAME TO pet;
Выводы
Лучше всего предотвратить запись повторяющихся данных в вашу базу данных, но иногда вы не можете этого сделать. Однако, если вам нужно удалить повторяющиеся данные, это не очень сложная задача.