我想从我的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中编写它的正确方法是什么?
答案 0 :(得分:4)
我认为这可以满足您的需求:
select min(price / quantity)
from t;
如果您想要该行中的所有信息,请使用order by
和limit
:
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)。