Mysql 获取表中 对某个字段进行分组 然后在分组之后的基础上 再组内排序 获取 分组后最新或者最大记录

1、新建User表,结构,及表中数据如下
【Mysql 获取表中 对某个字段进行分组 然后在分组之后的基础上 再组内排序 获取 分组后最新或者最大记录】Mysql 获取表中 对某个字段进行分组 然后在分组之后的基础上 再组内排序 获取 分组后最新或者最大记录
文章图片

2、查询User表中,相同年龄最大的一条记录
3、查询语句:

select * from ( select ROW_NUMBER() over(partition by tt.name order by tt.age desc) RowNum ,tt.* from user tt) as t1where RowNum = 1

4、查询结果:
Mysql 获取表中 对某个字段进行分组 然后在分组之后的基础上 再组内排序 获取 分组后最新或者最大记录
文章图片

5、查询,每组中,年龄最小的,需要查出所有的最小年龄记录
6、查询语句:
select t1.* from user t1 INNER JOIN (select * from ( select ROW_NUMBER() over(partition by tt.name order by tt.age ASC) RowNum ,tt.* from user tt) as t1where RowNum = 1) t2 on t1.`name` = t2.name and t1.age = t2.age

    推荐阅读