2011-06-17 80 views
3

我想根据距离给定值最近的值从数据库中查找表格行。根据距离给定值最近的值从数据库中查找行

我有以下数据

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 

假设用户想找到使用FAT

为8.0,它应该返回

Id Rate   Fat 
1 10   8.00 

为8.06,它应该返回

Id Rate   Fat 
2 20   8.10 

用于8.35它应该返回8.34而不是8.36(尽管不同的是相同的,应该优先考虑较低的值,如果不同的是一样的)

Id Rate   Fat 
5 60   8.34 

回答

5

在SQL Server中,你可以做到这一点

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

这句法对于MySQL是

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

+1你猜对了。 – Johan 2011-06-17 09:38:43

+0

@Johan - 感谢您的确认。 – 2011-06-17 09:41:37

相关问题