ホームページ >データベース >mysql チュートリアル >T-SQL LEFT JOIN が予想よりも少ない行を返すのはなぜですか?
T-SQL の左結合で予期した結果が得られない
この問い合わせでは、2 つのテーブル #appSteps と #appProgress 間の LEFT JOIN 操作が行われています。 、目的の結果セットが返されません。意図した結果セットには 3 行が含まれていますが、実際の結果には 2 行しかありません。
提供された SQL クエリは次のとおりです。
select p.appId, s.stepId, s.section, p.start from #appSteps s with (nolock) left join #appProgress p on s.stepId = p.stepId where s.section is not null and p.appId = 101
この問題は、右辺が含まれていることが原因で発生します。 WHERE 句のテーブル (#appProgress)。これを修正するには、条件を LEFT JOIN の ON 条件に移動する必要があります。
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 結果がフィルタリングされなくなります。参加する。 ON 句に条件を入れることで、LEFT JOIN は効果的に意図したとおりに動作し、右側のテーブル (#appProgress) の一致する行を含む左側のテーブル (#appSteps) からすべての行を返し、一致しない行には NULL を返します。
以上がT-SQL LEFT JOIN が予想よりも少ない行を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。