在mySQL中使用MAX()函数时获取正确的详细信息

时间:2015-12-17 14:53:44

标签: mysql group-by

所以我有两个mySQL表:productsprices。在产品中我有关于产品的信息(ID,名称,类型,日期......)和价格包括产品价格的信息。即表产品的ID为CF003X的产品USB可与表价格一起提供给卖家(A,B,C和价格18.00,12.00,13.50)。

现在,当我想为产品ID分组的日期选择最高价格时,查询会返回最高价格,但无法从哪个卖家正确显示。

我也想在i.E.获得结果卖家'华硕'价格最高1

SQL Fiddle

1 个答案:

答案 0 :(得分:1)

这是一个典型的例子,可以使用子查询:创建一个子查询,返回特定数据范围内产品的最高价格,然后将其加入价格表并获得以该价格供应的供应商。但是,日期范围应该在价格表中,而不是在产品中。价格变化,产品不是真的(它们可以被标记为不被列出)。您还应该考虑在定价表中包含产品和定价ID。

但是,我将使用您在sqlfiddle示例中提供的字段。

select prod.id, p.seller, p.price1, p.price2
from prices p
inner join (select id, max(price1) as maxprice from prices group by id) mp on p.id=mp.id and p.price1=mp.maxprice
inner join products prod on p.id=prod.id
where prod.date='...'

您可以通过将该供应商添加到where条件来扩展上述查询以显示特定供应商。