如何找到某个值介于2个其他值之间的行?

时间:2010-10-06 12:29:37

标签: mysql

所以,我有一个看起来大致相同的mysql表,其中前两列包含范围。

1 , 5  , Value1
6 , 14 , Value2
14 , 18 , Value3

如何查询找到某个值介于哪一行(即,如果我有9,则返回Value2;如果我有2,则返回Value1)。这张表大约10mb,所以效率越高越好。

谢谢!

4 个答案:

答案 0 :(得分:2)

实际上它与madgnome的答案几乎相同,但IMO更清洁一点:

SELECT ... WHERE 9 BETWEEN min_value AND max_value;

答案 1 :(得分:1)

SELECT
  val
FROM
  table
WHERE
  table.range_min <= 9
  AND table.range_max >= 9
  /* OR 9 BETWEEN table.range_min AND table.range_max*/

为了提高效率,请为range_min和range_max列添加索引。

答案 2 :(得分:0)

where fielda >= 9 and fieldb <=  9 

在表格中添加包含此2字段的索引

答案 3 :(得分:0)

select col3 from thetable where 2 between col1 and col2

您希望col1col2上的综合索引能够很好地发挥作用。