Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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
Php mysql。查找一个值之间有两个字段的记录_Php_Mysql - Fatal编程技术网

Php mysql。查找一个值之间有两个字段的记录

Php mysql。查找一个值之间有两个字段的记录,php,mysql,Php,Mysql,我有一个包含两个字段的表,ip\u start和ip\u end,我想在这两个字段之间找到具有给定ip地址的记录 假设该表如下所示: ip_开始ip_结束其他数据 123 778 xxx 500 800 yyy 我想找一张有400张的唱片。如果我说从表中选择*,其中400“ip_开始和ip_结束之间的400,ip_开始和ip_结束最近” 从ip_end>=400和ip_start的表中选择*您只需要WHERE子句中的两个约束和order by select * from yourtable

我有一个包含两个字段的表,
ip\u start
ip\u end
,我想在这两个字段之间找到具有给定ip地址的记录

假设该表如下所示:

ip_开始ip_结束其他数据
123 778 xxx
500 800 yyy
我想找一张有400张的唱片。如果我说
从表中选择*,其中400“ip_开始和ip_结束之间的400,ip_开始和ip_结束最近”


从ip_end>=400和ip_start的表中选择*您只需要WHERE子句中的两个约束和order by

 select * from yourtable where ip_end >= 400 and ip_start <= 400 
                                  ORDER BY (ip_end - ip_start);

从ip_end>=400和ip_start的表中选择*您的第一个查询不包括ip_start列,因此它将返回表中ip_end=400和的所有条目

ip_end如果您想要您的ip所属的最小ip范围,请使用此选项

SELECT * 
FROM table 
WHERE 400 >= ip_start AND 400 <= ip_end 
ORDER BY ip_end - ip_start ASC 
LIMIT 1
选择*
从桌子上

其中400>=ip_start和400 um,400不在500和800之间。请参阅:您的字段是什么类型的?它们是
INT
VARCHAR
还是其他什么?你真的在搜索IP地址吗,比如
192.168.1.5
?或者您正在搜索数字,如
400
?对于“550”,您希望返回什么范围?对于“750”,您希望返回什么范围?可以执行“最近的”。当您说“并且ip_开始距离ip_结束最近”时,您的意思是希望记录的ip_开始和ip_结束之间的最小范围是400的子集吗?
SELECT * FROM table
WHERE( 
       ip_start >= 400 AND
       ip_end   <= 400
      )
SELECT * 
FROM table 
WHERE 400 >= ip_start AND 400 <= ip_end 
ORDER BY ip_end - ip_start ASC 
LIMIT 1