抓取每个分组结果中的前n条记录
P粉785957729
P粉785957729 2023-08-21 19:55:22
[MySQL讨论组]

以下是最简单的可能示例,但任何解决方案都应能够扩展到所需的n个顶部结果:

给定如下表格,其中包含人员、组和年龄列,如何获取每个组中年龄最大的2个人?(组内的并列情况不应产生更多结果,而是按字母顺序给出前2个)

+--------+-------+-----+
| Person | Group | Age |
+--------+-------+-----+
| Bob    | 1     | 32  |
| Jill   | 1     | 34  |
| Shawn  | 1     | 42  |
| Jake   | 2     | 29  |
| Paul   | 2     | 36  |
| Laura  | 2     | 39  |
+--------+-------+-----+

期望的结果集:

+--------+-------+-----+
| Shawn  | 1     | 42  |
| Jill   | 1     | 34  |
| Laura  | 2     | 39  |
| Paul   | 2     | 36  |
+--------+-------+-----+

注意:这个问题是基于之前的一个问题——获取每个组的最大值的记录的SQL结果 - 用于获取每个组的单个顶部行,并且从@Bohemian获得了一个很好的MySQL特定的答案:

select * 
from (select * from mytable order by `Group`, Age desc, Person) x
group by `Group`

很想能够在此基础上继续构建,但我看不出如何做到。

P粉785957729
P粉785957729

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号