Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql:在两列之间选择值_Mysql_Sql_Between - Fatal编程技术网

Mysql:在两列之间选择值

Mysql:在两列之间选择值,mysql,sql,between,Mysql,Sql,Between,我试图在两列之间选择一个值。这是我的数据集 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 f

我试图在两列之间选择一个值。这是我的数据集

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

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

所以,您不希望下限包含在内,对吗

SET @value = 2;
SELECT * FROM table WHERE from > @value AND @value <= to;
SET@value=2;

从表中选择*,其中从@value和@value查询1:

select * 
from `table` 
where `from` < 2 and `to` >= 2
| ID | FROM | TO | PRICE |
--------------------------
|  1 |    0 |  2 |     3 |
select * 
from `table` 
where `from` < 2.001 and `to` >= 2.001
| ID | FROM | TO | PRICE |
--------------------------
|  2 |    2 |  3 |     3 |
查询2:

select * 
from `table` 
where `from` < 2 and `to` >= 2
| ID | FROM | TO | PRICE |
--------------------------
|  1 |    0 |  2 |     3 |
select * 
from `table` 
where `from` < 2.001 and `to` >= 2.001
| ID | FROM | TO | PRICE |
--------------------------
|  2 |    2 |  3 |     3 |

注意:使用这种方法,您将不会返回值
0
的行,除非您修改查询以适应该值。

您也可以尝试此方法

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 
你可以试试这个:

SELECT * FROM `table` WHERE 2 BETWEEN `from` AND `to`

如果您的值为
2
,则查询将其与列
匹配到
id
?我的目标是,如果我的值为2,则选择id为2的行,您的示例结果为
id=1
,就是这样吗?我将用简单的英语告诉您(更简单)。如果我的值介于from和to之间(包括to列),则我选择价格。因此,如果我有一个值2,那么结果必须是Id 1。如果我有2.001,那么这个值必须是Id 2。@nblmedia但您的数据有一个小问题:记录2的下边界正好等于记录1的上边界,所以这两个间隔都包括在内(我的意思是,2既是[0,2]的元素,也是[2,3]的元素)。所以,要么定义一个开放条件,就像维克多建议的那样,要么定义截获真正为空的时间间隔。你的第一个答案是正确的:从表中选择*,其中2>from和2@nblmedia我的两个查询是相同的。我刚刚为您的两个数据示例提供了输出,
2
2.001
。我不明白为什么这会导致选票下降,这是一个非常有效的答案@tftd,它被否决了,因为它基本上是同一个问题中已经提出的查询。此外,此SQL查询不执行问题作者要求执行的操作。