2011-06-17 4 views
3

Je souhaite trouver la ligne de la table à partir de la base de données en fonction de la valeur la plus proche de la valeur donnée.Rechercher la ligne de la base de données en fonction de la valeur la plus proche de la valeur donnée

J'ai des données suivantes

Id Rate   Fat 
1 10   8.00 
2 20   8.10 
3 30   8.20 
4 40   8.30 
5 50   8.34 
6 60   8.40 
7 50   8.36 

utilisateur suppose que vous voulez trouver en utilisant la graisse

Pour 8.0, il doit retourner

Id Rate   Fat 
1 10   8.00 

Pour 8,06, il doit retourner

Id Rate   Fat 
2 20   8.10 

Pour 8,35 elle devrait retourner 8,34 au lieu 8,36 (bien que la différence est la même, il faut donner la préférence à la valeur inférieure si la différence est même)

Id Rate   Fat 
5 60   8.34 

Répondre

5

Dans SQL Server, vous pouvez le faire

select top 1 * 
from T 
order by abs(Fat - 8.35), Fat 

Je suppose que la syntaxe pour MySQL est

select * 
from T 
order by abs(Fat - 8.35), Fat 
limit 1 
+1

+1 vous devinez correctement. – Johan

+0

@Johan - Merci pour la confirmation. –

Questions connexes