左外の結合と予期しない行数:よく見える SQLデータベースでは、左外の結合が2つのテーブルのデータを組み合わせて、結果セットの左側のテーブルからすべての行を含めることを保証します。 ただし、一般的な誤解は、出力は常に
左のテーブルと同じ数の行を持っているということです。これは必ずしも真実ではありません。左外の結合の動作は、左のテーブルの各行を右のテーブルの対応する行と一致させることです。 一致が見つかった場合、両方のテーブルのデータが単一の行に結合されます。 重要なのは、no
一致が左のテーブルの特定の行の右のテーブルにある場合、その左のテーブルの行は引き続き結果に含まれていますが、右のテーブルからの列の値が値に含まれています。 。
左側のテーブルの単一の行が右のテーブルの複数のNULL
行が一致する場合に矛盾が生じます。 この場合、左外の結合は出力に複数の行を生成します。1つは右側の各マッチに1つ、元の左側のテーブルのそれを超える行数になります。
で説明しましょう このクエリは、
からのみデータを取得することを意図しています。 ただし、in
が<code class="language-sql">SELECT SUSP.Susp_Visits.SuspReason, SUSP.Susp_Visits.SiteID FROM SUSP.Susp_Visits LEFT OUTER JOIN DATA.Dim_Member ON SUSP.Susp_Visits.MemID = DATA.Dim_Member.MembershipNum</code>
行ごとに複数の行が含まれます。
この膨張した行数を回避し、左のテーブルからデータのみを取得するには、より単純なクエリが望ましいです。
SUSP.Susp_Visits
この直接クエリは、テーブル間の1対多くの関係を扱う際に、左外の結合の動作に固有の行数の不一致の可能性なしに、目的のデータを効率的に取得します。
以上が左外部結合が左テーブルよりも多くのレコードを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。