mysql 只取各个分组后最新的一条
时间: 2023-10-21 21:04:39 浏览: 215
MySql分组后随机获取每组一条数据的操作
5星 · 资源好评率100%
可以使用子查询和 MAX 函数来实现。假设有一张名为 `table_name` 的表,其中包含字段为 `group_id` 和 `create_time`,要求对 `group_id` 进行分组,并只取每个分组中最新的一条记录,可以使用以下 SQL 语句:
```
SELECT t1.*
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;
```
解释一下上述 SQL 语句的执行过程:
- 子查询 `SELECT group_id, MAX(create_time) AS max_time FROM table_name GROUP BY group_id` 会将原表按 `group_id` 进行分组,并计算每个分组中 `create_time` 的最大值。
- 主查询中的 `INNER JOIN` 会将原表和子查询的结果连接起来,连接条件为 `group_id` 相等且 `create_time` 等于最大值。
- 最终的查询结果中只包含每个分组中 `create_time` 最大的一条记录。
阅读全文