ホームページ > データベース > mysql チュートリアル > T-SQL LEFT JOIN が予想よりも少ない行を返すのはなぜですか?

T-SQL LEFT JOIN が予想よりも少ない行を返すのはなぜですか?

Mary-Kate Olsen
リリース: 2025-01-04 00:32:40
オリジナル
970 人が閲覧しました

Why is my T-SQL LEFT JOIN Returning Fewer Rows Than Expected?

なぜ T-SQL の左結合が予期した結果を生成しないのですか?

提供された SQL クエリでは、LEFT JOIN を使用しているにもかかわらず、 2 つのテーブル (#appSteps と #appProgress) では、予想される 3 行ではなく 2 行のみが返されます。この予期しない動作の原因を特定するために、クエリとそのコンポーネントを分析してみましょう。

LEFT JOIN 操作は、対応する一致が存在しない場合でも、左側のテーブル (#appSteps) からすべての行を返すことを目的としています。右側のテーブル (#appProgress)。ただし、クエリには #appSteps:

where s.section is not null
ログイン後にコピー

から NULL 行を除外する条件が WHERE 句に含まれています。この条件により、結果セットが #appSteps.section が NULL 以外の行に事実上制限されてしまいます。 LEFT JOIN を INNER JOIN に変換します。 #appSteps.section 内の NULL 値を持つ行が除外され、その結果、予期された 3 行目が欠落します。

この問題を修正するには、条件を LEFT JOIN の ON 条件に移動する必要があります:

Left Join #appProgress P   On  S.stepId = P.stepId 
                           And P.appId = 101
ログイン後にコピー

ON 句で条件を指定すると、それが結合基準の一部となり、#appSteps から一致する行のみがフェッチされるようになります。 #アプリの進捗状況。その結果、LEFT JOIN は #appProgress に一致するかどうかに関係なく、NULL 値を持つ行を含む #appSteps からすべての行を取得します。

このアプローチを使用すると、クエリは元のように必要な 3 つの行を返します。

以上がT-SQL LEFT JOIN が予想よりも少ない行を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート