mysql – 选择类似的IP地址 – 忽略最后3位数

我有一个包含用户名和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,这是我目前无法改变的. 目前我正在使用

我有一个包含用户名和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的用户进行分组?

预先感谢您的帮助.

最佳答案
试试这个:

SELECT 
    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

关于作者: dawei

【声明】:石家庄站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐