如何从我的数据库中选择每件商品的最低价格?

时间:2017-07-06 12:06:33

标签: mysql sql

我想从我的MySQL数据库中选择每件商品的最低价格,但我不确定如何编写查询。

这是一个示例表。

  id |  price | quantity
    1|   $200 |      200
    2|  $1000 |       10
    3|     $5 |        1

在这种情况下,id 1的price / item为$ 1(200/200),id为2 $ 100(1000/10),id 3为$ 5(5/1),查询返回$ 1,因为它是最低价格/项目。

那怎么能把它翻译成SQL呢?我想过:

SELECT MIN(price)/200 WHERE quantity=200

但它仅适用于硬编码数量,我必须为每个ID编写数量,并且不可能有1000多种不同的价格和数量。所以我需要一些灵活的变量或类似的东西,比如:

SELECT MIN(price)/quantity

但这不是正确的语法。 (或者它对我不起作用)

在MySQL中编写它的正确方法是什么?

3 个答案:

答案 0 :(得分:4)

我认为这可以满足您的需求:

select min(price / quantity)
from t;

如果您想要该行中的所有信息,请使用order bylimit

select t.*, (price / quantity) as unit_price
from t
order by unit_price asc
limit 1;

答案 1 :(得分:0)

select min(Price/Quantity) from tbl

tbl是您拥有价格和数量数据的表格。这将有效

答案 2 :(得分:0)

以下是Gordon Linoff解决方案的便携版本:

SELECT t.*, (price / quantity) as unit_price
FROM  t t1
WHERE NOT EXISTS (SELECT * FROM t t2 WHERE t2.price / t2.quantity < t1.price / t1.quantity);

关键是LIMIT特定于某些产品(MySQL和PostgreSQL AFAIK)。