mysql - 选择相似的 IP 地址 - 忽略最后 3 位数字

标签 mysql

我有一张包含用户名和 IP 的表格。
我需要获取具有相似 IP 的用户列表 -忽略最后 3 或 2 或 1 位数字-

示例:
190.200.210.180190.200.210.60算作同一个IP。
205.50.4.30205.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的用户。 SQL statement output

是否可以将 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/

相关文章:

php - MYSQL 重复条目

mysql - 将重复语句分配给变量

java - 如何以高性能方式仅获取 MySQL 中每个产品的最新条目的状态列?

java - JPA - 将一个实体更新/删除语句重定向到镜像表

mysql - 如何优化规范化数据库结构的查询?

PHP 未定义索引 : admin in "filename" on line 48

mysql - VIF 在 R 中返回别名系数

php - 如何使用 phpmailer 跟踪通过 smtp 发送的电子邮件?

PHP将数据提交到同一页面上的表

Python SQLAlchemy - "MySQL server has gone away"