我已经查看了一段时间的查询,需要进行健全检查。
我正在寻找一个返回最新状态的查询,基于按列分组。当我针对我的测试数据运行时,我没有得到我期望的结果。每个状态都带有时间戳,并保留用于历史目的。因此,当我进行查询时,我只想要最新的查询。
# 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;
关于我缺少什么的建议或关于如何实现目标的建议?
答案 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
;