【发布时间】:2015-10-19 18:13:49
【问题描述】:
SQL 数据库中有一个表,名为 Players: 球员(ID、姓名、年龄、性别、分数) 其中 ID 是主键。
现在我想编写一个查询来查找以下结果: 对于每个年龄,找出该年龄所有玩家中得分最高的玩家的姓名和年龄。
我写了以下查询:
SELECT P.name, P.age
FROM Players P
WHERE P.score = (SELECT MAX(P2.score) FROM Players P2)
GROUP BY P.age, P.name
ORDER BY S.age
但是,上述查询的结果是所有年龄段的所有玩家中得分最高的玩家列表,而不是每个年龄段的玩家列表。
然后我将查询更改为以下内容:
SELECT P.name, P.age, MAX(P.score)
FROM Players P
GROUP BY P.age, P.name
ORDER BY P.age
但是,我写的第二个查询给出了每个年龄段的玩家列表,但是对于每个年龄段,不仅有得分最高的玩家,还有该年龄段内其他得分较低的玩家。
我应该如何修复我的逻辑/查询代码?
谢谢!
【问题讨论】: