2011-06-17 41 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