Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:从具有IP范围的表中选择IP_Mysql - Fatal编程技术网

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

MySQL:从具有IP范围的表中选择IP,mysql,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

我需要一些关于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')
这些城市应该是“洛杉矶”和“广州”

这可能吗?因为这个表有大约500万个条目,所以这样做是否有效

谢谢, 伯恩哈德

您可以尝试以下方法:

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。

谢谢您的回复。那不是我所需要的。因此,如果我想知道哪个城市拥有IP“1.0.8.255”,我必须遍历“IP_from”和“IP_to”列。第一场比赛将是广州市,因为我所理解的是,ip_from>1.0.8.0,ip_to是。你能说得更清楚一点吗?好了,现在好多了!这要复杂得多!让我想想:)未测试但可能有效:
从城市中选择城市,其中(INET_ATON('0.0.0.0')介于INET_ATON(ip_FROM)和INET_ATON(ip_to))之间
其中
0.0.0.0
是要测试的IP。