FROM table_name
GROUP BY group_id
) t2 ON t1.create_time = t2.max_time AND t1.group_id = t2.group_id;
子查询
SELECT MAX(create_time) AS max_time, group_id FROM table_name GROUP BY group_id
返回每个分组中最新记录的创建时间和对应的分组ID。
外部查询连接表
table_name
和子查询结果,检索出表
table_name
中创建时间等于最新创建时间并且分组ID等于对应的分组ID的记录。
方法2:使用连接查询
SELECT t1.*
FROM table_name t1
LEFT JOIN table_name t2 ON t1.group_id = t2.group_id AND t1.create_time < t2.create_time
WHERE t2.create_time IS NULL;
左连接表 table_name
自身,连接条件为 t1.group_id = t2.group_id AND t1.create_time < t2.create_time
,即将表 table_name
中创建时间早于当前记录的记录与当前记录连接起来。
在结果中筛选出左连接后右侧表(即 t2
表)为空的记录,即找到每个分组中最新的记录。
这两种方法都可以取出每个分组中最新的一条记录,具体使用哪种方法取决于实际情况和性能要求。