我有一张包含用户名和 IP 的表格。
我需要获取具有相似 IP 的用户列表 -忽略最后 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 来进行选择语句以将具有相似 ip 的用户分组?
预先感谢您的帮助。
最佳答案
试试这个:
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
关于mysql - 选择相似的 IP 地址 - 忽略最后 3 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12718615/