17

我正在尝试在 2 列之间选择一个值。这是我的数据集

id    from    to    price
1     0.00    2.00  2.50
2     2.00    3.00  3.00
3     3.00    4.00  4.50

如果我的值为 2,我的目标是选择ID 为 1的行(介于 from 和 to 之间)。所以这是我正在使用的查询:

select * from table where 2 between from and to;

以下是 MySQL 在执行此查询时返回的结果:

id    from    to    price
1     0.00    2.00  2.50
2     2.00    3.00  3.00

我正在寻找的结果如下:

id    from    to    price
1     0.00    2.00  2.50

我试过使用 < 和 > 等。但是,我总是得到两个结果。任何帮助将非常感激。

4

4 回答 4

31

你可以试试这个:

SELECT * FROM `table` WHERE 2 BETWEEN `from` AND `to`
于 2014-07-26T14:40:35.253 回答
13

所以,你不希望下限具有包容性,对吧?

SET @value = 2;
SELECT * FROM table WHERE from > @value AND @value <= to;
于 2012-10-10T17:23:38.787 回答
7

查询一:

select * 
from `table` 
where `from` < 2 and `to` >= 2

SQL 小提琴示例

输出:

| ID | FROM | TO | PRICE |
--------------------------
|  1 |    0 |  2 |     3 |

查询 2:

select * 
from `table` 
where `from` < 2.001 and `to` >= 2.001

输出:

| ID | FROM | TO | PRICE |
--------------------------
|  2 |    2 |  3 |     3 |

0注意:使用这种方法,除非您修改查询以适应这种情况,否则您将无法返回 value 行。

于 2012-10-10T17:33:54.473 回答
1

你也可以试试这个

select * from table where (from-to) = 2  // if you want the exact distance to be 2 
select * from table where (from-to) >= 2 // Distance more than 2 
于 2012-12-21T05:27:49.163 回答