我一直在研究 SQLzoo 问题,但在 JOIN 教程问题 #13 中的最后一个问题上遇到了麻烦 - 列出每场比赛以及每个团队的得分,如图所示。
链接:http://sqlzoo.net/wiki/The_JOIN_operation
在他们给出的示例代码中,它使用了一个案例。我是这样修改的:
SELECT game.mdate, game.team1,
CASE WHEN goal.teamid=game.team1 THEN 1 ELSE 0 END score1, game.team2,
CASE WHEN goal.teamid=game.team2 THEN 1 ELSE 0 END score2
FROM game, goal WHERE game.id=goal.matchid
GROUP BY game.mdate, goal.matchid, game.team1, game.team2
他们建议对 score1/score2 使用 SUM 函数将提供答案。我对如何在 SQL 中创建的这两列上使用 SUM 函数感到困惑。
任何人都可以提供有关如何以更好的方式编写此 SQL 查询的宽泛术语的提示吗?
最佳答案
这对我有用,可以更正左连接。
SELECT mdate, team1,
SUM(CASE WHEN teamid = team1 THEN 1 ELSE 0 END) score1,
team2,
SUM(CASE WHEN teamid = team2 THEN 1 ELSE 0 END) score2
FROM game LEFT JOIN goal ON matchid = id GROUP BY mdate, matchid, team1, team2
关于mysql - SQLzoo JOIN 教程 #13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15439874/