2017-04-06 89 views
0

我試圖從問題表中獲取所有記錄,不管它們是否存在於答案表中。共有50個問題,但我只檢索49個。我做錯了什麼?SQL Server左連接不返回空白條目

select 
    q.question_txt 
from 
    apdev.form_template.question q 
left join 
    apdev.form_submission.answer a on q.question_id = a.question_id 
where 
    a.submission_id = 2704336 
    and q.form_id = 23 

回答

6

經典錯誤。除了第一張桌子上的條件都需要進入on從句:

select q.question_txt 
from apdev.form_template.question q left join 
    apdev.form_submission.answer a 
    on q.question_id = a.question_id and a.submission_id = 2704336 
where q.form_id = 23; 

爲什麼? left join在非匹配行中爲submission_id產生NULL值。條件a.submission_id = 2704336失敗。雖然你可能(a.submission_id = 2704336 or a.submission_id is null),這不具有相同的語義。找出爲什麼不解決問題是一個很好的練習。

+0

我以爲肯定我曾試過。我一定有其他的東西頂起來了。非常感謝你。 – nikotromus