我想从数据库中找到表行,具体取决于最接近给定值的值。
我有以下数据
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
答案 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