Php 两个范围之间的MySQL查询

Php 两个范围之间的MySQL查询,php,mysql,sql,Php,Mysql,Sql,我需要一个问题的帮助。我从用户那里获取输入,他们输入的范围在1-100之间。所以可能是30-40或66-99。然后,我需要一个查询来从一个具有高\u范围和低\u范围的表中提取数据,以找到与它们范围内的任何数字的匹配 因此,如果用户选择30-40,并且表中有1-80、21-33、32-40、40-41、66-99和1-29的条目,那么除了表中的最后两个条目外,它将找到所有条目 为什么要这样做,最简单的方法是什么 谢谢如果我理解正确(即,您希望任何范围与用户输入的范围重叠),我会说: SELECT

我需要一个问题的帮助。我从用户那里获取输入,他们输入的范围在1-100之间。所以可能是30-40或66-99。然后,我需要一个查询来从一个具有高\u范围和低\u范围的表中提取数据,以找到与它们范围内的任何数字的匹配

因此,如果用户选择30-40,并且表中有1-80、21-33、32-40、40-41、66-99和1-29的条目,那么除了表中的最后两个条目外,它将找到所有条目

为什么要这样做,最简单的方法是什么

谢谢

如果我理解正确(即,您希望任何范围与用户输入的范围重叠),我会说:

SELECT * FROM table WHERE low <= $high AND high >= $low
从表中选择*,其中low=$low

据我所知,范围是以这种格式存储的
低-高
。如果是这样,那么这是一个糟糕的设计。我建议将值分为两列:
low
,和
high

如果已经拆分了值,可以使用以下语句:

SELECT * FROM myTable WHERE low <= $needleHigherBound AND high >= $needleLowerBound
从myTable中选择*,其中low=$NeedleLowerBond

如果您将这些值存储在一列中,并且坚持将它们保存在一列中,那么您可能会发现MySQL的函数很有用。但是在这种情况下,您必须编写一个复杂的查询来解析所有行的所有值,然后将它们与您的搜索值进行比较。似乎要花很多力气来掩盖设计缺陷。

从ID介于30和40之间的表中选择*@法基看起来你的答案是正确的<代码>从表中选择*(高范围在30到40之间或低范围在30到40之间):)希望我发布官方答案?不太清楚我的答案为什么会被否决,我相信它完全符合OP的要求。当然,low和high是表列,$high和$low是用户输入。我没有投反对票,但我认为我们可以使用
BETWEEN
运算符,因为OP需要包含数据,但无论如何,您的答案是正确的。@Rahul,如果您比较3个值(即一个值与一个范围),则两个值之间的差异是有效的。这里我们有4个来比较(2个范围)。我以为我已经尝试了你的解决方案,但它不起作用,但我想我错了。到目前为止,它提取了正确的条目。