从sqlzoo#13左边加入解释

时间:2014-02-10 22:39:40

标签: sql left-join

有人可以解释为什么需要左连接来获得所有结果吗? 如果我使用简单的连接,它将忽略没有进球的比赛(0-0),我不明白为什么(因为它是和函数)

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 (id = matchid)
GROUP BY mdate, matchid, team1, team2

感谢帮助

1 个答案:

答案 0 :(得分:1)

如果您使用左连接,则无论GOAL记录是否存在,每个GAME记录都包含在您的结果集中。

如果您使用内部联接,则仅包含可以找到GOAL记录的GAME(并且仅包括属于现有GAME的GOAL)。如果游戏没有目标,则不会包括在内。

(在构建此记录集之后,然后执行GROUP BY并生成SUM值,但该过程与连接结果无关。)