web-dev-qa-db-fra.com

Mysql: Sélection de valeurs entre deux colonnes

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.

14

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;
13
Vikdor

Vous pouvez essayer ceci:

SELECT * FROM `table` WHERE 2 BETWEEN `from` AND `to`
17
Juliano Lima

Requête 1:

select * 
from `table` 
where `from` < 2 and `to` >= 2

SQL Fiddle Exemple

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.

7
RedFilter

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 
1
user1859658