Anledningen är att du inkluderar den högra tabellen i WHERE
klausul. Du bör flytta det till ON
skick för 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
Anledningen till att den gör detta är att WHERE
klausul utvärderas efter LEFT JOIN
, som sedan filtrerar bort din NULL
resultat från LEFT JOIN
.
Inklusive den högra tabellen för en LEFT JOIN
(eller den vänstra tabellen i en RIGHT JOIN
) i WHERE
satsen omvandlar effektivt OUTER JOIN
till en INNER JOIN
.