在SQL中获得最近似的值

时间:2018-10-20 20:20:08

标签: mysql sql

我有一个带有水果和价格行的表,例如:

Apple - 1

Melon - 3

Orange - 10

Pear - 5

我想进行查询,以获取价格更接近要传递的价格的水果。

类似的东西:

SELECT * 
FROM fruit
WHERE condition

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

这是您想要的吗?

SELECT f.* 
FROM fruit f
ORDER BY ABS(f.price - 7)
LIMIT 1;

这将获得价格最接近7的水果。当然,“ 7”是可以为任何值的参数。

答案 1 :(得分:0)

好吧,评论中几乎都有答案:

SELECT * FROM fruit  
WHERE abs(price-@searchprice) =
  (SELECT abs(price-@searchprice) 
  FROM fruit ORDER BY abs(price-@searchprice) LIMIT 1)

子查询从输入的价格(@searchprice-根据数据库/驱动程序组合的需要更改参数名称样式)找到最接近的1个实际价格之间的价格差

然后将其用于查找所有差异等于该价格差异的水果。我们这样做是为了退回所有与价格挂钩的商品-在您的示例数据中,如果searchprice为2,则Apple和Melon都差不多,应该退回