Left Outer Join未返回预期结果

Pau*_*lyM 2 sql postgresql join

我有两张桌子:玩家和游戏.我想返回所有球员的名单,无论他们的球队是否参赛.如果他们的团队确实在玩游戏,我想要game_id,否则替换为NULL.

我认为这只是一个LEFT OUTER JOIN,但它只返回实际播放的玩家列表.

SELECT a.id, b.match_id 
FROM player a 
  LEFT OUTER JOIN game b ON a.team_id = b.home_team_id or a.team_id = b.away_team_id 
WHERE b.round = 1
Run Code Online (Sandbox Code Playgroud)

我想这是基本的东西..抱歉.

a_h*_*ame 6

where对外部表的条件变成了外连接回内部联接,因为where将只对那些不为空值,真实的,但在那里没有匹配在外部连接表中的行会都空值.

您需要将where条件移动到连接条件中.

SELECT a.id, b.match_id 
FROM player a 
  LEFT OUTER JOIN game b 
     ON (a.team_id = b.home_team_id or a.team_id = b.away_team_id) 
    AND b.round = 1 
Run Code Online (Sandbox Code Playgroud)