Mysql查询以获取最接近的记录


Mysql query to get closest record

我有一个表

id              startmileage       endmileage      price
1                   1                  2             30
2                   2                  3             50
3                   3                  4             70
4                   4                  5             100
5                   5                  25            4.5               
6                   25                 35             7 

在这个表中,我存储了数据来获得里程之间的价格(从开始到结束里程)我可以得到1个差值之间的价格,比如1比2,2比3。但对于介于5到25和25到35之间的值,我尝试了一个查询,它将同时适用于最接近和精确的值,如

SELECT * 
FROM  table 
ORDER BY ABS( startmileage - myValue ) 
LIMIT 1

但是这个查询只适用于一个输入(startmiley),因为我需要同时使用startmiley和endmiley来获得最接近的记录。

有人能告诉我对此的最佳查询吗?

ORDER BY
(
   greatest(startmileage - $myvalue ,0)
   +
   greatest($myvalue - endmileage ,0)
) ASC , startmileage DESC

如果$myvalue在边界内,那么它将等于零。如果是在开始里程之前,第一部分将上升,而第二部分为零。如果$myvalue在结束里程之后,第一部分将为零,第二部分将上升。

函数greatest( ??? , 0 )仅在大于零时返回???,否则返回零。


编辑:位优化查询(工作方式相同):

ORDER BY
greatest(startmileage - $myvalue , $myvalue - endmileage ) ASC
, startmileage DESC