ホームページ >データベース >mysql チュートリアル >LEFT OUTER JOIN が左側のテーブルに存在する行よりも多くの行を返すのはなぜですか?
LEFT OUTER JOIN 予期しない動作: 左のテーブルより多くの行があります
LEFT OUTER JOIN に関するよくある誤解は、結果セットには常に左側のテーブルと同じかそれより少ない行が含まれるということです。 ただし、これは常に真実であるとは限りません。 特定の条件下では、行数が左側のテーブルの行数を超える可能性があります。
この問題は、「SUSP.Susp_Visits」(左側のテーブル) と「DATA.Dim_Member」(右側のテーブル) の間で LEFT OUTER JOIN を使用するクエリで発生しました。結合結果には、「SUSP.Susp_Visits」の 4935 行よりも多くの行が含まれていました。
LEFT OUTER JOIN について
LEFT OUTER JOIN は次のように機能します:
余分な行が表示される理由
追加の行は、左側のテーブルの行を複製することによって作成されるのではなく、右側のテーブルの構造によって作成されます。 この問題は、右側のテーブル ("DATA.Dim_Member") の 複数 行が、左側のテーブル ("SUSP.Susp_Visits") の 単一 行と一致する場合に発生します。
たとえば、「SUSP.Susp_Visits」の「MemID」が「DATA.Dim_Member」の複数の「MembershipNum」値に対応する場合、JOIN はその左側の単一行に対して複数の出力行を生成し、全体の行が増加します。数えます。
ソリューション
LEFT OUTER JOIN でのこの行のインフレを回避するには:
以上がLEFT OUTER JOIN が左側のテーブルに存在する行よりも多くの行を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。