MySQL: группировка по первым трем числам IP

elitedesign
На сайте с 25.10.2012
Offline
69
1062

Всем привет!

Мне нужно сделать вывод списка IP-адресов из таблицы 'ip' так, чтобы при этом группировка шла не по всему IP а только по первым трем окетам в IP-адресе. Чтобы выводились уникальные IP у которых совпадали бы три первых числа в окете.

Никак не могу MySQL-запрос составить.

Понимаю что должно быть как-то так:

SELECT ip FROM table_name GROUP BY (или distinct использовать)... а далее затык.

Заранее спасибо за содействие.

[Удален]
#1

SELECT ip FROM tableNAme WHERE ip LIKE '123.%' ?

elitedesign
На сайте с 25.10.2012
Offline
69
#2
Emotion_schemer:
SELECT ip FROM tableNAme WHERE ip LIKE '123.%' ?

Простите, не так выразился, по первым трем окетам (XXX.XXX.XXX.) а не по первым трем числам (поправил в первом посте).

[Удален]
#3

Принцип тот же получается ip LIKE '123.456.789.%'

Или я вопрос неверно понял? что в итоге должны достать?

elitedesign
На сайте с 25.10.2012
Offline
69
#4
Emotion_schemer:
Принцип тот же получается ip LIKE '123.456.789.%'

Да, Ваш вариант подойдет, если мы знаем первые три окета. Но задача была: чтобы выводились все уникальные IP у которых совпадали бы три первых числа в окете..

[Удален]
#5

добавить перед этим SELECT DISTINCT ip ?

vandamme
На сайте с 30.11.2008
Offline
675
#6

изучите текстовые функции https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substr

примерный запрос такой

SELECT count(*) as count, ip, SUBSTRING_INDEX(ip, '.', 3) as ips FROM log GROUP BY ips ORDER BY count DESC LIMIT 10;

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий