mysql 批量查询取每一组最新一条数据
在MySQL中,要实现批量查询取每组最新一条数据,通常可以使用子查询结合GROUP BY来完成。以下是一个示例,假设我们有一个表messages
,它有group_id
和created_at
两个字段,我们想要为每个group_id
获取最新的一条消息。
SELECT m1.*
FROM messages m1
JOIN (
SELECT group_id, MAX(created_at) as latest
FROM messages
GROUP BY group_id
) m2 ON m1.group_id = m2.group_id AND m1.created_at = m2.latest;
在这个查询中,外层查询选择messages
表的所有字段,内层查询通过GROUP BY对每个group_id
进行分组,并且使用MAX()聚合函数找出每组中最新的created_at
时间。然后,通过将内层查询的结果与原始表进行连接(JOIN),外层查询选择与内层查询中最新created_at
时间匹配的那些记录。这样,每个group_id
分组就只会返回一个最新的记录。
评论已关闭