左外连接不返回T1的所有行

时间:2010-03-12 23:19:00

标签: sql postgresql

如果左表连接符合条件,则左外连接应至少返回T1表中的一行。但是,如果左外连接成功执行连接,然后发现另一个标准不满足怎么办?有没有办法让查询返回一个T1值和T2值设置为NULL的行?

这是特定的查询,我正在尝试返回候选人列表,以及用户对这些候选人的支持,如果存在此类支持。

   SELECT c.id, c.name, s.support  
     FROM candidates c
LEFT JOIN support s on s.candidate_id = c.id
    WHERE c.office_id = 5059 
      AND c.election_id = 92 
      AND (s.user_id = 2 OR s.user_id IS NULL)  --This line seems like the problem
 ORDER BY c.last_name, c.name

查询加入候选者和支持表,但发现它是支持该候选者的另一个用户(例如user_id = 3)。然后候选人完全从结果集中消失。

1 个答案:

答案 0 :(得分:2)

你不能把条件从哪里移动到join子句?

LEFT JOIN support s on s.candidate_id=c.id and s.user_id = 2