Нужно было в таблице найти дубликаты по столбцу и вывести их по всем столбцам. В итоге смастерил вот такой запрос:
mysql> select * from alias where address IN (select address from alias GROUP BY address HAVING COUNT(address)>1) order by address;
Ищет дубликаты в столбце address, выводит полную строку из таблицы alias и сортирует вывод. В итоге получилось такое:
mysql> select * from alias where address IN (select address from alias GROUP BY address HAVING COUNT(address)>1) order by address; +--------------------------+-----------------------------------------+---------------+---------------------+---------------------+--------+ | address | goto | domain | created | modified | active | +--------------------------+-----------------------------------------+---------------+---------------------+---------------------+--------+ | directoria@domain.ua | directoria@domain.ua | domain.ua | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | 1 | | directoria@domain.ua | kmd@domain.ua | domain.ua | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | 1 | | help@domain.ua | help_desk@domain.ua | domain.ua | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | 1 | | help@domain.ua | tech@domain.ua | domain.ua | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | 1 |
А теперь неприятное: этот запрос очень тяжёлый, выполнялся 0,8 секунд в таблице с 500 записями на серваке с 8 Гб и 2х4-ядерных проца. Поэтому, пользуйтесь этим запросом осторожно, ибо запрос в пару тысяч записей может завалить его.
2 коментарі “[mysql] вывод всех дубликатов”
Огромное спасибо, добавил в закладки…
Делал запрос в табличке с 2200 записей = Запрос занял 2.7834 сек
Хочу сделать запрос в табличке с 300000+ записей 🙂
посмотрим что будет… :)))
сервак IntelCore i7 8 ядер, 24ГБ оперативы
Не мое решение но такйо запрос быстрее обрабатывает (——-
select emailen, count(*) from tyh76_cck_store_item_content group by emailen having count(*)>1 order by count(*) desc
——-)