mysql 组最大值行

标签 mysql group-by aggregate-functions

我有这张 table : -http://sqlfiddle.com/#!9/b3223/1

id  entity_id   value   date
1   1           98      March, 28 2015 19:58:43
2   1           321     March, 28 2015 19:59:54
3   1           123     March, 28 2015 19:59:54
4   2           34      March, 28 2015 20:00:43
5   2           76      March, 28 2015 20:00:44

我想列出每个 entity_id最新行(按日期值)。

第一个解决方案,也是错误的解决方案是: - http://sqlfiddle.com/#!9/b3223/2

SELECT id, entity_id, value, MAX(  `date` ) 
FROM  `gmd` 
GROUP BY entity_id

可行的解决方案之一似乎是: -http://sqlfiddle.com/#!9/b3223/3

SELECT id, entity_id, value,  `date` 
FROM gmd AS main
WHERE DATE = ( 
    SELECT MAX(  `date` ) 
    FROM gmd
    WHERE entity_id = main.entity_id 
) 
GROUP BY entity_id

我想知道这是否是一个可靠的解决方案,以及是否有其他更优雅的方法来做到这一点。

谢谢!

最佳答案

如果您总是想获取具有相同日期且具有最高id的值,则可以尝试此操作:

SELECT id, entity_id, value, 
  (SELECT MAX(`date`) FROM gmd y WHERE y.id = x.id) AS `date`
FROM  `gmd` x
GROUP BY entity_id DESC
ORDER BY id;

这是sqlfiddle .

关于mysql 组最大值行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29322261/

相关文章:

postgresql - PSQL:聚合函数(总和)不起作用

postgresql - SqlAlchemy:多个列的不同计数

postgresql - 在 Postgresql 中选择位掩码

php - 在 while 循环中仅显示未插入到另一个表中的记录

c# - 合并内存中的两个数据表并将它们分组以获得列的总和。使用 linq 但有点迷失在这里

php - mysql查询中的变量,分组和排序

Mysql Order By After Group?

mysql - 根据引用表对数据进行分组

php - 使用类查询数据库

MySQL 连接超时 - MySQL 服务器已经消失(Sinatra、ActiveRecord)