首页 > 解决方案 > 访问 SQL 查询组前 1

问题描述

我正在尝试编写一个查询来选择每个数据组中的顶部记录。

例如下面

分配 团队 积分
1 利物浦 90
1 曼彻斯特 88
2 利兹 94
2 兵工厂 77
3 博尔顿 66
3 马刺队 72
3 德比 33

我希望我的查询返回每个部门中得分最高的团队:

分配 团队 积分
1 利物浦 90
2 利兹 94
3 马刺队 72

我认为这应该很容易。

有任何想法吗?

谢谢

标签: sqlms-access

解决方案


在 MS Access 中,您可以使用:

select t.*
from t
where t.points = (select max(t2.points)
                  from t t2
                  where t2.division = t.division
                 );

如果有平局,则返回所有匹配的团队。如果即使有平局,您也只想要一支球队:

select t.*
from t
where t.team = (select t2.team
                from t t2
                where t2.division = t.division
                order by t2.points desc, t2.team
               );

推荐阅读