我有一个带有水果和价格行的表,例如:
Apple - 1
Melon - 3
Orange - 10
Pear - 5
我想进行查询,以获取价格更接近要传递的价格的水果。
类似的东西:
SELECT *
FROM fruit
WHERE condition
任何帮助将不胜感激。
答案 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都差不多,应该退回