获取sql中最接近的值

x4shl7ld  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(616)

我有一张有水果和价格的table,例如:

Apple - 1

Melon - 3

Orange - 10

Pear - 5

我想做一个查询,让水果的价格更接近我要传递的值。
比如:

SELECT * 
FROM fruit
WHERE condition

任何帮助都将不胜感激。

c6ubokkw

c6ubokkw1#

这就是你想要的吗?

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

这就得到了价格接近7的水果。当然,“7”是一个可以是任何值的参数。

2nc8po8w

2nc8po8w2#

好吧,这些评论基本上都有答案:

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

子查询将从输入的价格(@searchprice-根据数据库/驱动程序组合的需要更改参数名称样式)中查找最接近1的实际价格
然后用它来查找所有与价格差相等的水果。我们这样做是为了让任何捆绑在价格上的商品都能被退回——在您的示例数据中,如果searchprice为2,那么苹果和甜瓜都同样接近,应该被退回

相关问题