【发布时间】:2015-06-23 05:55:06
【问题描述】:
我有一个定期报告状态的组件列表。
我想编写一个查询来查找按组件分组的最新状态列表。
通常我会使用这个问题的公认答案所描述的解决方案:MySQL order by before group by
但是,每秒可能会报告多个状态,因此无法保证我会检索到最新的。因此,我想找到具有最新时间戳的状态,并且在重复时间戳的情况下,找到具有最高 PK 的状态。
理想情况下,我希望有如下查询:
SELECT *
FROM component_status
ORDER BY component_status.timestamp DESC, component_status.component_status_id DESC
GROUP BY component_status.component_id;
但是您不能在 ORDER BY 之后执行 GROUP BY。
有没有人遇到过类似的问题并找到了解决方案?
【问题讨论】:
-
我看不出您的问题与所引用的问题有何不同。
-
@Strawberry 引用的帖子使用 single 列上的聚合来获取最新记录。在这个问题中,最近的记录由 两个 列确定。
-
@GiorgosBetsos 当然可以,但原理还是一样。
标签: mysql sql group-by sql-order-by