Årsagen er, at du inkluderer den højre tabel i WHERE
klausul. Du skal flytte det til ON
betingelse for LEFT JOIN
:
Select P.appId, S.stepId, S.section, P.start
From #appSteps S With (NoLock)
Left Join #appProgress P On S.stepId = P.stepId
And P.appId = 101
Where S.section Is Not Null
Grunden til at det gør dette, er fordi WHERE
klausul evalueres efter LEFT JOIN
, som derefter filtrerer din NULL
fra resultater fra LEFT JOIN
.
Inklusive den højre tabel for en LEFT JOIN
(eller den venstre tabel i en RIGHT JOIN
) i WHERE
klausulen transformerer effektivt OUTER JOIN
ind i en INNER JOIN
.