mysql group by 分组后取最新时间
时间: 2024-05-30 15:07:38 浏览: 114
基于mysql实现group by取各分组最新一条数据
5星 · 资源好评率100%
在 MySQL 中,可以使用 GROUP BY 子句将结果集按照指定的列进行分组,然后可以使用聚合函数来计算每个分组的结果。如果我们需要对每个分组中的数据按照时间进行排序,然后取最新的一条数据,可以采用以下两种方式:
1. 子查询方式
可以先对分组后的每个组内数据按照时间倒序排序,然后使用子查询的方式取出每个组内的第一条数据,示例 SQL 语句如下:
```
SELECT t1.id, t1.group_id, t1.create_time
FROM table_name t1
INNER JOIN (
SELECT group_id, MAX(create_time) AS max_time
FROM table_name
GROUP BY group_id
) t2 ON t1.group_id = t2.group_id AND t1.create_time = t2.max_time;
```
2. 窗口函数方式
可以使用窗口函数 ROW_NUMBER() 对每个分组内的数据按照时间倒序排序,并给每条数据编号,然后取编号为 1 的数据,示例 SQL 语句如下:
```
SELECT id, group_id, create_time
FROM (
SELECT id, group_id, create_time, ROW_NUMBER() OVER (PARTITION BY group_id ORDER BY create_time DESC) AS row_num
FROM table_name
) t
WHERE row_num = 1;
```
阅读全文