我有一个包含用户名和IP的表.
我需要获得具有类似IP -ignore最后3或2或1位数的用户列表 –
例:
将190.200.210.180和190.200.210.60计为相同的IP.
将205.50.4.30和205.50.4.197计为相同的IP.
IP的字段类型设置为varchar,这是我目前无法改变的.
目前我正在使用:
SELECT GROUP_CONCAT( username ) names,IPs,COUNT( IPs ) AS Instances
FROM users
GROUP BY IPs
HAVING (COUNT(IPs) >1)
ORDER BY `Instances ` DESC
获得具有相同IP的用户.
是否可以将IP字段设置为varchar,以使select语句对具有相似ips的用户进行分组?
预先感谢您的帮助.
最佳答案
试试这个:
原文链接:https://www.f2er.com/mysql/433431.htmlSELECT
GROUP_CONCAT(username) AS names,SUBSTRING_INDEX(IPs,'.',3) AS IPs
COUNT(*) AS Instances
FROM
users
GROUP BY
SUBSTRING_INDEX(IPs,3)
HAVING
COUNT(*) > 1
ORDER BY
Instances DESC