【发布时间】:2015-03-28 20:30:42
【问题描述】:
我有这张桌子: - http://sqlfiddle.com/#!9/b3223/1
id entity_id 起息日 1 1 98 2015 年 3 月 28 日 19:58:43 2 1 321 2015 年 3 月 28 日 19:59:54 3 1 123 2015 年 3 月 28 日 19:59:54 4 2 2015 年 3 月 28 日 34 日 20:00:43 5 2 76 2015 年 3 月 28 日 20:00:44我想列出每个entity_id 的最新行(按date 值)。
第一个解决方案,错误的也是:-http://sqlfiddle.com/#!9/b3223/2
SELECT id, entity_id, value, MAX(`date`) 来自`gmd` GROUP BY entity_id其中一个可行的解决方案似乎是: - http://sqlfiddle.com/#!9/b3223/3
SELECT id, entity_id, value, `date`
从 gmd 作为主
日期 = (
选择最大值(`日期`)
来自 gmd
WHERE entity_id = main.entity_id
)
GROUP BY entity_id
我想知道这是否是一个可靠的解决方案,以及是否有其他更优雅的方法可以做到这一点。
谢谢!
【问题讨论】:
-
还有两个相同的日期?显示每个实体的两条记录?
-
检查您的第二个查询结果并进行一些数据更改sqlfiddle.com/#!9/ce5ab/1
-
@Beginner ,我明白你的意思,但在这种情况下,结果仍然可以,因为两个日期都相等。虽然可以有第二个值进行比较,并且可以是最高 ID。
-
@SerbuFlorin-Adrian 在这种情况下,请参阅我的帖子。
标签: mysql group-by aggregate-functions