Как найти дубликаты IP адресов?

Здравствуйте, подскажите, есть база одного из действующих ресурсов, требуется найти дубликаты учеток, зарегистрированных с одного IP.
Составил такой запрос:
SELECT member_id, name as one_from_logins,ip_address, count(ip_address) as logins_by_ip from members where GROUP by ip_address having logins_by_ip > 1 ORDER BY member_id asc

Получил один из логинов (кстати, как вывести все логины для сгруппированных IP?), собственно сам IP и количество логинов, зарегистрированных с одного IP. Но есть один минус - дубликаты выводятся только для полностью совпадающих IP и учетки, зарегистрированные с IP отличающихся на 1-2 октета (3 и 4 октет) не видны.
Собственно вопрос, как можно сделать (если можно - с примером) поиск дубликатов для полностью совпадающих IP, а также отличающихся на 3 и 4 октет?

Заранее спасибо
  • Вопрос задан
  • 1896 просмотров
Решения вопроса 1
@AlexeyVD
Для поиска и вывода дубликатов можете попробовать следующее:
SELECT *
  FROM members m
  JOIN (SELECT *
          FROM members
          WHERE logins_by_ip > 1
          GROUP BY ip_address
          HAVING COUNT(1) > 1) AS sel ON m.member_id = sel.member_id
  ORDER BY m.ip_address

Тут мы в подзапросе ищем ip, которые дублируются в нескольких учетках, а затем выводим эти учетки, отсортировав по ip.
Для поиска по отличающимся октетам группируйте и сортируйте по:
SUBSTRING_INDEX(ip_address, '.', 2)
или
SUBSTRING_INDEX(ip_address, '.', 3)
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
dimonchik2013
@dimonchik2013
non progredi est regredi
оператор LIKE

ну и freelansim.ru
Ответ написан
@LiguidCool
Я бы вообще выводил во что-то экселеобразное и там разбирал. Не та задача. Или вы хотите эти данные каждому юзеру на сайте выводить?
Ответ написан
Gavr23
@Gavr23
php, mysql, html
Для полностью одинаковых ip
SELECT ip_address, GROUP_CONCAT(name SEPARATOR ', ') AS name from members group by ip_address
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы