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