可以使用子查询来实现这个需求,具体的 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 语句:

  1. 首先查询出每个分组中最新的一条记录,使用子查询实现,子查询中的 WHERE 条件限制查询的是同一个分组中的记录。

  2. 然后根据分组 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
MySQL 分组查询每组最新记录:高效解决方案及代码示例

原文地址: https://www.cveoy.top/t/topic/njSy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录