ホームページ > データベース > mysql チュートリアル > 左外部結合が左テーブルよりも多くのレコードを返すのはなぜですか?

左外部結合が左テーブルよりも多くのレコードを返すのはなぜですか?

Barbara Streisand
リリース: 2025-01-25 01:11:08
オリジナル
144 人が閲覧しました

Why Does My Left Outer Join Return More Records Than the Left Table?

左外の結合と予期しない行数:よく見える SQLデータベースでは、左外の結合が2つのテーブルのデータを組み合わせて、結果セットの左側のテーブルからすべての行を含めることを保証します。 ただし、一般的な誤解は、出力は常に

左のテーブルと同じ数の行を持っているということです。これは必ずしも真実ではありません。

左外の結合の動作は、左のテーブルの各行を右のテーブルの対応する行と一致させることです。 一致が見つかった場合、両方のテーブルのデータが単一の行に結合されます。 重要なのは、no

一致が左のテーブルの特定の行の右のテーブルにある場合、その左のテーブルの行は引き続き結果に含まれていますが、右のテーブルからの列の値が

値に含まれています。 。 左側のテーブルの単一の行が右のテーブルの複数のNULL行が一致する場合に矛盾が生じます。 この場合、左外の結合は出力に複数の行を生成します。1つは右側の各マッチに1つ、元の左側のテーブルのそれを超える行数になります。

sqlクエリの例:

で説明しましょう このクエリは、

からのみデータを取得することを意図しています。 ただし、

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 サイトの他の関連記事を参照してください。

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