MySQL查询以最新状态返回每组一个记录

时间:2015-06-16 21:52:36

标签: mysql sql group-by

我已经查看了一段时间的查询,需要进行健全检查。

我正在寻找一个返回最新状态的查询,基于按列分组。当我针对我的测试数据运行时,我没有得到我期望的结果。每个状态都带有时间戳,并保留用于历史目的。因此,当我进行查询时,我只想要最新的查询。

# All Records
SELECT * FROM msgstatus ORDER BY StatusDateTime Desc;

# My Query to Get Only the Latest Statuses (which isn't working as expected)
SELECT * FROM msgstatus GROUP BY Id1, ID2 ORDER BY StatusDateTime Desc;

关于我缺少什么的建议或关于如何实现目标的建议?

1 个答案:

答案 0 :(得分:0)

MarcB的评论引导我走上了正确的道路。

从本质上讲,看起来group by似乎发生在order by之前。

可能有一个更优雅的解决方案......但以下对我有效,我想我会发布我所拥有的内容,直到有人展示更好的东西:)

SELECT 
  Field1,
  Field2,
  Id1,
  Id2,
  ...
FROM 
  (SELECT * FROM msgstatus ORDER BY StatusDateTime Desc LIMIT 1) as subquery
GROUP BY Id1, Id2
#ORDER BY StatusDateTime Desc # This is optional
;
相关问题