【问题标题】:Get correct details when using MAX() function in mySQL在 mySQL 中使用 MAX() 函数时获取正确的详细信息
【发布时间】:2015-12-17 23:15:55
【问题描述】:

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

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

我也想在 i.E.卖家“华硕”的价格最高1

SQL Fiddle

【问题讨论】:

    标签: mysql group-by


    【解决方案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 条件来显示特定供应商。

    【讨论】:

    • 效果很好。但我有一个子问题。如果你有一百万个数据库数据怎么办?它将无限加载。
    • 不一定。这取决于很多因素。如果您有这种情况,那么我建议您在单独的问题中提出,但前提是这是一个实际问题,而不是理论上的问题。在理论上,这太宽泛了。
    猜你喜欢
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 2022-10-02
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    相关资源
    最近更新 更多