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

标签 mysql group-by

所以我有两个 mySQL 表:productsprices。在产品中,我有有关产品的信息(id、名称、类型、日期...),价格包括产品的价格信息。 IE。 产品表中 ID 为 CF003X 的产品 USB 可在卖家的价格表中购买(A、B、C 以及价格 18.00、12.00、13.50)。

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

我也想得到结果,即卖家“Asus”的价格最高1

SQL Fiddle

最佳答案

这是一个可以使用子查询的典型示例:创建一个子查询,返回特定数据范围内产品的最高价格,然后将其连接回价格表并获取以该价格供货的供应商。然而,日期范围可能应该在价格表中,而不是在产品表中。价格发生变化,但产品却没有变化(可以将它们标记为不列出)。您还应该考虑在定价表中添加产品和定价 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 条件来显示该供应商。

关于mysql - 在 mySQL 中使用 MAX() 函数时获取正确的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34337537/

相关文章:

mysql - 在 MySQL 中使用 Group By 将两个查询合并为一个

mysql - 查找 MySQL JSON 对象或数组的交集

MySQL嵌套选择查询?

php - 使用 PHP 和 MYSQL 进行年龄组统计

用于获取多个日期范围的 mysql 查询

尝试更新 joomla 插件中的表时出现 Mysql 语法错误

mysql - 从子查询接收的值列表中选择,可能为空

mysql - 如何获取属于用户的所有记录并仅显示具有不同名称的记录?

MySQL 超慢内连接与 group by

mysql - mysql 中按值等于 0 或不存在的行的行进行分组?