我对此查询有疑问:
SELECT MAX(PL.BEST_RESULT), S.NAME, A.NAME
FROM PLAYS PL
INNER JOIN ATHLETE A ON A.ID_ATHLETE = PL.ID_ATHLETE
INNER JOIN SPORT S ON S.ID_SPORT = PL.ID_SPORT
GROUP BY PL.ID_SPORT, S.NAME, A.NAME
它显示了桌面游戏的所有记录,但我只希望按运动分组的最大值best_result
和拥有结果的运动员名称。有人能告诉我我的查询有什么问题吗?
PLAYS {ID_ATHLETE, ID_SPORT, BEST_RESULT}
SPORT {ID_SPORT, NAME}
ATHLETE {ID_ATHLETE, NAME}
答案 0 :(得分:0)
您的查询将返回运动和运动员的每个独特组合。你需要从GROUP BY和SELECT中删除A.NAME,然后你就会有不同的体育。
SELECT MAX(PL.BEST_RESULT), S.NAME
FROM PLAYS PL
INNER JOIN SPORT S ON S.ID_SPORT = PL.ID_SPORT
GROUP BY PL.ID_SPORT, S.NAME
答案 1 :(得分:0)
你只需要有一个内部连接语句。
Select Max(PL.BEST_RESULT), S.NAME
FROM PLAYS PL
INNER JOIN SPORT S
ON S.ID_SPORT = PL.ID_SPORT
GROUP BY S.NAME
,PL.ID_SPORT
您试图通过查询获取所有内容。