MySQL先按指定字段排序,再按其他字段分组取每组首条数据
MySQL实现先排序再分组取每组第一条数据
需求
实现MySQL中先按指定类型排序,再按其他类型分组,获取每组的第一条数据。
原始数据表(users)
| name | age | sex |
|---|---|---|
| a | 20 | 1 |
| b | 25 | 2 |
| c | 30 | 2 |
| d | 18 | 1 |
期望查询结果
| name | age | sex |
|---|---|---|
| b | 25 | 2 |
| d | 18 | 1 |
实现SQL语句
select * from (select * from users order by sex desc ,age ) temp group by temp.sex order by sex desc
语句逻辑说明
- 子查询先对
users表按sex降序、age升序排序,确保同性别分组内数据按年龄从小到大排列; - 将排序后的结果作为临时表
temp,按sex分组时,每组会默认取排序后的第一条数据; - 最后按
sex降序输出,与期望结果的顺序一致。
内容的提问来源于stack exchange,提问作者liuzheng
相关产品推荐
相关产品推荐

