我正在尝试构建一个查询,该查询将显示数据库中每个团队的得分(无论如何作为开始)。我有两张表,一张包含球队列表,一张包含比赛,格式为
周|主队|客队|主场得分|客队得分|结果|比赛ID
结果可以是 A(客场获胜)、H(主场获胜)或 D(平局)。我可以使用
轻松找到给定团队的积分SELECT
(SELECT COUNT(matches.Result)*3 FROM matches WHERE (HomeTeam='Arsenal' AND Result='H') OR (AwayTeam='Arsenal' AND Result='A')) +
(SELECT COUNT(matches.Result) FROM matches WHERE (HomeTeam='Arsenal' OR AwayTeam='Arsenal') AND Result='D');
我想做的是:
FOR EACH teams.Team in teams
SELECT
(SELECT COUNT(matches.Result)*3 FROM matches WHERE (HomeTeam=Team AND Result='H') OR (AwayTeam=Team AND Result='A')) +
(SELECT COUNT(matches.Result) FROM matches WHERE (HomeTeam=Team OR AwayTeam=Team) AND Result='D');
不幸的是,这不起作用,我不太明白为什么。我做错了什么?
最佳答案
简单使用子查询:
SELECT teams.Team,
((SELECT COUNT(matches.Result)*3 FROM matches WHERE (HomeTeam=teams.Team AND Result='H') OR (AwayTeam=Team AND Result='A')) +
(SELECT COUNT(matches.Result) FROM matches WHERE (HomeTeam=teams.Team OR AwayTeam=teams.Team) AND Result='D')) as Points
关于mysql - 如何告诉 SQL 使用另一个表作为输入值来运行命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27453135/