【发布时间】:2013-01-28 10:19:50
【问题描述】:
所以,我有一张表,我希望显示价格为 MIN 的行...
sellers - saleid, productsid[fk for products table], cid[fk for customers table], quantity
price.
这里有一些记录:
sellers =1,2,2,200,5.00
sellers=2,3,4,100,1.00
我做这个查询:
select ProductID, Quantity, MIN(Price) FROM sellers
我得到了这个输出
2,200,1.00
为什么它显示的是最低价格但是第一个记录列? 它应该显示,即相应的行...
3,4,1.00
知道这是为什么吗?
=========编辑======= 感谢您的建议,它的工作原理。我现在有另一个小问题。我希望为每种产品选择最低价格。有没有我可以用来执行此操作的查询?因此,例如,如果这是新的 Sellers 表:
sellers =1,2,2,200,5.00
sellers=2,3,4,100,1.00
seller=3,2,3,250,3.00
那么产品 2,3 的最低价格将是
sellers=2,3,4,100,1.00
seller=3,2,3,250,3.00
如何使用 min 函数做这样的事情?我试过了
select c.Fname p.ProductName, s.ProductID, s.Quantity, s.Price
FROM sellers s, products p, customer c
WHERE s.Price = (select MIN(Price) FROM sellers WHERE p.ID=s.ProductID AND c.ID=s.cid);
然而,这似乎并没有输出每个独特产品的最低价格。关于如何纠正这个问题的任何想法?
谢谢
【问题讨论】:
-
当您在
GROUP BY子句中还包含非聚合列时,使用聚合函数(例如MIN())时应该会得到更一致的结果。