Ответ 1
SO, вы не хотите, чтобы нижняя граница была включительной, не так ли?
SET @value = 2;
SELECT * FROM table WHERE from > @value AND @value <= to;
Я пытаюсь выбрать значение между двумя столбцами. Вот мой набор данных
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 (между и от). Итак, вот запрос, который я использую:
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
Я пробовал использовать < и > и т.д. Но я всегда получаю два результата. Любая помощь будет высоко оценена.
SO, вы не хотите, чтобы нижняя граница была включительной, не так ли?
SET @value = 2;
SELECT * FROM table WHERE from > @value AND @value <= to;
Вы можете попробовать следующее:
SELECT * FROM `table` WHERE 2 BETWEEN `from` AND `to`
Запрос 1:
select *
from `table`
where `from` < 2 and `to` >= 2
Вывод:
| 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
, если вы не измените запрос, чтобы это учесть.
Вы также можете попробовать это,
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