その理由は、右側のテーブルをWHEREに含めているためです。 句。これをONに移動する必要があります 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
これを行う理由は、WHERE 句は後に評価されます LEFT JOIN 、次にNULLを除外します LEFT JOINの結果 。
LEFT JOINの右側のテーブルを含む (またはRIGHT JOINの左側のテーブル )WHERE 句は、OUTER JOINを効果的に変換します INNER JOINに 。