两个范围之间的MySQL查询

时间:2014-06-26 22:31:40

标签: php mysql sql

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

因此,如果一个用户做了30-40并且该表具有1-80,21-33,32-40,40-41,66-99和1-29的条目,它将找到除了最后两个之外的所有条目桌子。

最简单的原因是什么?

由于

2 个答案:

答案 0 :(得分:1)

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

SELECT * FROM table WHERE low <= $high AND high >= $low

答案 1 :(得分:0)

我理解的是,范围以low-high格式存储。如果是这种情况,那么这是一个糟糕的设计。我建议将值拆分为两列:lowhigh

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

SELECT * FROM myTable WHERE low <= $needleHigherBound AND high >= $needleLowerBound

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