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查询不执行问题作者要求执行的操作。