【问题标题】:Select the whole records with highest value for each group为每个组选择具有最高值的整个记录
【发布时间】:2017-07-24 14:31:03
【问题描述】:

我的 CMS 将页面及其过去版本存储在同一个表中。我想通过productID 提取每条记录的最新版本。对于:

productID version name text  price etc etc
ABC123       1.2  Fred Stuff 2.34  ... ...
DEF456       0.3  Jill Other 1.99  ... ...
ABC123       1.3  Fred Stuff 2.99  ... ...
DEF456       0.4  Jill Other 2.50  ... ...
ABC123       1.4  Fred Stuff 3.45  ... ...

我需要得到:

ABC123       1.4  Fred Stuff 3.45  ... ...
DEF456       0.4  Jill Other 2.50  ... ...

(任何顺序)。我已经尝试了各种变化

select distinct(version),* group by productID,max(version) from table;

但我不知道该怎么做。 “选择最高”的其他答案都是关于计数和总和;我只需要完整的记录。

【问题讨论】:

标签: mysql group-by max distinct


【解决方案1】:

Cross Apply 会很好用,除了这是 mySQL...所以

您需要生成一组数据,其中包含表的逻辑键和您感兴趣的最大值。然后连接回基集。

所以SELECT max(version) mv, productID from table group by productID 为我们获取了每个 productID 的最大版本,然后我们可以将其加入到基本集以获取所需的其他数据。

SELECT *
FROM Table A
INNER JOIN (SELECT max(version) mv, productID 
            FROM table 
            GROUP BY productID) B
 on A.ProductID= B.ProductID
and A.Version = B.MV

【讨论】:

    猜你喜欢
    • 2013-02-14
    • 2022-11-07
    • 1970-01-01
    • 2021-02-25
    • 2021-07-30
    • 2019-04-13
    • 1970-01-01
    • 2017-10-03
    • 2017-10-20
    相关资源
    最近更新 更多