0x000a Finding duplicate rows in MySQL table. Поиск дубликатов в таблице MySQL

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

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

Ещё вариант использования этого запроса – статистика. Например, по таблице пользователей можно получить количество пользователей с одинаковым именем, фамилией, возрастом, узнать, какой город самый популярный.

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

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

SELECT `col`, COUNT(*) AS `count` FROM `table` GROUP BY `col` HAVING `count` > 1;

Где `col` – имя поля таблицы, по которому будем искать.