MySQL获取分组后每组最大的数据
Contents
需求
获取分组后每组数据中,ID最大的数据
表数据
table: hhh
id name
1 hello
2 hello1
3 hello2
4 hello
5 hello2
6 hello3
7 hello1
想要的结果
id name
4 hello
5 hello2
6 hello3
7 hello1
SQL
实现1
select * from hhh where id in (
SELECT substring_index(group_concat(id order by id desc SEPARATOR ','),",",1) from hhh GROUP BY name
);
这个比较灵活,可以在group by 后,再按结果集里的再进行自己想要的字段排序等。
这个可以自由实现获取分组后,第N大的数据。比如,分组后,第N大的数据:
select * from hhh where id in (
SELECT substring_index(substring_index(group_concat(id order by id desc SEPARATOR ','),",",N), ",",-1) from hhh GROUP BY name
);
将N
改为你自己想要的数字即可.
实现2
SELECT * from hhh WHERE id in (
select max(id) from hhh GROUP BY name
);
这种只能实现最大,或者最小。