Der Grund dafür ist, dass Sie die rechte Tabelle in WHERE
einschließen Klausel. Sie sollten das auf ON
verschieben Bedingung des 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
Der Grund dafür ist, dass WHERE
-Klausel wird nach ausgewertet der LEFT JOIN
, der dann Ihren NULL
herausfiltert ergibt sich aus dem LEFT JOIN
.
Einschließlich der rechten Tabelle eines LEFT JOIN
(oder die linke Tabelle eines RIGHT JOIN
) im WHERE
-Klausel transformiert effektiv den OUTER JOIN
in einen INNER JOIN
.