我有一张有水果和价格的table,例如:
Apple - 1 Melon - 3 Orange - 10 Pear - 5
我想做一个查询,让水果的价格更接近我要传递的值。比如:
SELECT * FROM fruit WHERE condition
任何帮助都将不胜感激。
c6ubokkw1#
这就是你想要的吗?
SELECT f.* FROM fruit f ORDER BY ABS(f.price - 7) LIMIT 1;
这就得到了价格接近7的水果。当然,“7”是一个可以是任何值的参数。
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,那么苹果和甜瓜都同样接近,应该被退回
2条答案
按热度按时间c6ubokkw1#
这就是你想要的吗?
这就得到了价格接近7的水果。当然,“7”是一个可以是任何值的参数。
2nc8po8w2#
好吧,这些评论基本上都有答案:
子查询将从输入的价格(@searchprice-根据数据库/驱动程序组合的需要更改参数名称样式)中查找最接近1的实际价格
然后用它来查找所有与价格差相等的水果。我们这样做是为了让任何捆绑在价格上的商品都能被退回——在您的示例数据中,如果searchprice为2,那么苹果和甜瓜都同样接近,应该被退回