mysql - 为每个组选择具有最高值的整个记录

标签 mysql group-by max distinct

我的 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...所以

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

因此 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

关于mysql - 为每个组选择具有最高值的整个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45283244/

相关文章:

c - 在 C 中使用 pthreads 在一维数组中查找最大值的有效方法

mysql - 从包含零的行中获取最大值,负数

mysql - vb.net mysql 查询在单击中运行

php - mysql显示汉字像方 block

mysql - MYSQL 5.1.11版本更新表​​的前5000行的列

php - 分页之前的多维 groupBy 和 orderBy - Laravel 5

php - 获取按作者分组并按类别过滤的最新帖子列表

mysql - 如何使用 COUNT(*) 和 GROUP BY 优化 mysql 查询

python - Pandas:自定义分组功能

mysql - SQL 前 2 条记录/值