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

< や > などを使用してみましたが、常に 2 つの結果が得られます。どんな助けでも大歓迎です。

4

4 に答える 4

13

だから、下限を包括的にしたくありませんよね?

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

クエリ1:

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に対応するようにクエリを変更しない限り、値の行は返されません。

于 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 に答える