2010-03-12 38 views
1

如果外部聯接與條件匹配,則應從T1表返回至少一行。但是如果左外部聯接成功執行聯接又會如何發現另一個標準不滿足呢?有沒有辦法讓查詢返回一個T1值和T2值設置爲NULL的行?不返回T1中所有行的左外部聯接

下面是具體的查詢,我試圖返回候選人列表,以及用戶對這些候選人的支持,如果存在這樣的支持。

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,說)不同的用戶。然後候選人從結果集中完全消失。

回答

2

難道你不能將條件從where語句移動到join語句嗎?

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

工作完美。我以前從未使用過這種結構,但我會再次使用它。謝謝。 – Summer 2010-03-12 23:24:14

相關問題