SQL Server查询主场进球最多球队的英格兰球员数结果错误咨询
问题排查
- 分组逻辑错误:你的语句按
PLAYER_ID分组,每个分组仅对应1名球员,COUNT(PLAYER.PLAYER_ID)返回的结果永远为1,无法统计整队的球员总数。 - 关联条件错误:NATION表主键字段名为
ID,你写的关联条件PLAYER.NATION_ID = NATION.NATION_ID字段名不匹配,会导致关联失败。 - 核心逻辑缺失:没有先定位「单场主场进球最多的球队」这个前置筛选条件,直接关联球员和比赛表,会拉取该球队所有主场比赛的记录,统计范围不符合需求。
正确查询语句
逻辑为先找到单场比赛中最高的主场进球数,对应到所属主队,再统计该球队下英格兰籍球员的总数,SQL Server适配语句如下:
SELECT COUNT(p.ID) AS england_player_total, max_home_score FROM ( -- 子查询获取主场进球最高的主队ID和对应的进球数 SELECT TOP 1 HOME_TEAM_ID, HOME_SCORE AS max_home_score FROM MATCH ORDER BY HOME_SCORE DESC ) top_home_team INNER JOIN PLAYER p ON top_home_team.HOME_TEAM_ID = p.TEAM_ID INNER JOIN NATION n ON p.NATION_ID = n.ID WHERE n.NATION_NAME = 'England' GROUP BY max_home_score
如果存在多场比赛主队进球同为最高值,需要统计所有这些球队的英格兰籍球员总数,可以调整子查询逻辑:
SELECT COUNT(DISTINCT p.ID) AS england_player_total, MAX(HOME_SCORE) AS max_home_score FROM MATCH m INNER JOIN PLAYER p ON m.HOME_TEAM_ID = p.TEAM_ID INNER JOIN NATION n ON p.NATION_ID = n.ID WHERE n.NATION_NAME = 'England' AND m.HOME_SCORE = (SELECT MAX(HOME_SCORE) FROM MATCH)
内容的提问来源于stack exchange,提问作者exjbqv
相关产品推荐
相关产品推荐

