mysql - 如何在MySQL中查找相似的IP?

标签 mysql similarity ipv4

我有一个表,其中包含用户的最后一个 IP。使用以下查询我可以找到所有重复的 IP 地址

SELECT id, ip, COUNT(ip) AS ip_count FROM users GROUP BY ip HAVING ip_count > 1

我试图选择仅与最后一部分不同的 IP。以下是一些示例:

+--------------+---------------+---------+
|     IP 1     |     IP 2      | Similar |
+--------------+---------------+---------+
| 230.15.26.79 | 230.15.26.230 | true    |
| 32.82.0.5    | 32.82.0.180   | true    |
| 230.15.26.79 | 193.230.15.26 | false   |
| 230.15.26.79 | 230.15.39.115 | false   |
+--------------+---------------+---------+

我可以使用以下命令手动查找是否存在与特定 IP 相似的 IP:

SELECT id, ip FROM users where ip LIKE "230.15.26.%"

但是,这意味着我必须循环整个数据库,该数据库的容量相当大。

是否有另一种方法可以仅通过一到两个查询来完成上述操作?

最佳答案

您可以使用类似于以下的查询提取所需的数据:

SELECT SUBSTRING_INDEX( ip, '.', 3), COUNT(*)  
FROM ipadd
GROUP BY SUBSTRING_INDEX( ip, '.', 3)
HAVING COUNT(*) > 1

假设表结构为以下行

create table ipadd(id INT, ip VARCHAR(15));

您可以看到它的实际效果 here

关于mysql - 如何在MySQL中查找相似的IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63131999/

相关文章:

MySQL 在预订系统中寻找空闲房间

php - 使用ajax和php上传图片和数据

python - 连接到本地主机数据库的 python 中的搜索框

ruby-on-rails - 是否可以根据 ruby​​ 中的相似性对字符串数组进行分组

c# - C# 中的 IPv6 地址范围

mysql - SQL 'LIKE BINARY' 比普通 'LIKE' 慢吗?

java - 查找最相似的 List<String> 的有效方法

php - Libpuzzle 索引数百万张图片?

c++ - 使与 IPv6 或 IPv4 的连接变得容易?

json - 由于 ipv6 (Ubuntu) 在 Curl POST 之前延迟 10 秒