根据最接近给定值的值从数据库中查找行

时间:2011-06-17 08:31:53

标签: mysql sql database

我想从数据库中找到表行,具体取决于最接近给定值的值。

我有以下数据

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

1 个答案:

答案 0 :(得分: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