MySQL:从具有ip范围的表中选择IP

时间:2015-11-02 18:29:04

标签: mysql

我需要一些SELECT查询的帮助。

有一个表' cities',它们将IP范围映射到城市。

ip_from  ip_to          city
------------------------------------
0.0.0.0  0.255.255.255  Los Angeles
1.0.0.0  1.0.0.255      South Brisbane
1.0.1.0  1.0.3.255      Fuzhou
1.0.4.0  1.0.7.255      Ripponlea
1.0.8.0  1.0.15.255     Guangzhou

示例:IP 0.1.2.3将是洛杉矶'和1.0.8.255'广州'。

现在我想获得具有固定IP地址的城市:

SELECT city FROM cities WHERE ip IN ('0.1.2.3', '1.0.8.255')

应该提供上述城市' LA'和'广州'。

这可能吗?这会有效吗,因为这个表有大约5百万个条目?

谢谢, 哈德

1 个答案:

答案 0 :(得分:2)

您可以尝试以下内容:

SELECT city
FROM cities
WHERE (INET_ATON(ip) BETWEEN INET_ATON('0.1.2.3') AND INET_ATON('1.0.8.255'));

编辑:经过测试,确实有效!

SELECT city FROM cities WHERE (INET_ATON('0.0.0.0') BETWEEN INET_ATON(ip_from) AND INET_ATON(ip_to));

0.0.0.0是您要测试的IP。