J'essaie de sélectionner une valeur entre 2 colonnes. Voici mon jeu de données
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
Mon objectif, si j'ai une valeur de 2 est de sélectionner la ligne avec le ID 1 (entre de et à). Alors voici la requête que j'utilise:
select * from table where 2 between from and to;
Et voici les résultats renvoyés par MySQL lors de l'exécution de cette requête:
id from to price
1 0.00 2.00 2.50
2 2.00 3.00 3.00
Et le résultat que je recherche est le suivant:
id from to price
1 0.00 2.00 2.50
J'ai essayé d'utiliser <et>, etc. Mais j'obtiens toujours deux résultats. Toute aide serait très appréciée.
SO, vous ne voulez pas que la borne inférieure soit inclusive, non?
SET @value = 2;
SELECT * FROM table WHERE from > @value AND @value <= to;
Vous pouvez essayer ceci:
SELECT * FROM `table` WHERE 2 BETWEEN `from` AND `to`
Requête 1:
select *
from `table`
where `from` < 2 and `to` >= 2
Sortie:
| ID | FROM | TO | PRICE |
--------------------------
| 1 | 0 | 2 | 3 |
Requête 2:
select *
from `table`
where `from` < 2.001 and `to` >= 2.001
Sortie:
| ID | FROM | TO | PRICE |
--------------------------
| 2 | 2 | 3 | 3 |
Remarque: avec cette approche, vous n'obtiendrez aucune ligne pour la valeur 0
, sauf si vous modifiez la requête pour l'adapter.
Vous pouvez aussi essayer ça,
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