MySQL 分组查询每组最新记录:高效解决方案及代码示例
可以使用子查询来实现这个需求,具体的 SQL 语句如下:
SELECT *
FROM my_table t1
WHERE t1.create_time = (
SELECT MAX(t2.create_time)
FROM my_table t2
WHERE t2.group_id = t1.group_id
)
GROUP BY t1.group_id
解释一下上面的 SQL 语句:
-
首先查询出每个分组中最新的一条记录,使用子查询实现,子查询中的 WHERE 条件限制查询的是同一个分组中的记录。
-
然后根据分组 ID 进行分组,并且筛选出每个分组中 create_time 等于最新时间的记录。这里使用 GROUP BY 和 WHERE 语句实现。
注意:如果同一个分组中最新的记录有多条,那么上面的 SQL 语句只会返回其中一条。如果需要返回所有最新记录,可以将 WHERE 子句改为 HAVING 子句,并且使用 MAX 函数来计算最新时间。具体的 SQL 语句如下:
SELECT *
FROM my_table t1
WHERE t1.create_time IN (
SELECT MAX(t2.create_time)
FROM my_table t2
WHERE t2.group_id = t1.group_id
GROUP BY t2.group_id
)
GROUP BY t1.group_id
原文地址: https://www.cveoy.top/t/topic/njSy 著作权归作者所有。请勿转载和采集!