sql >> データベース >  >> RDS >> Mysql

INNER JOINが等しくない理由(!=)は永遠にハングします

    最初のINNER JOINとしましょう table1の1,000,000行の75%を返します 。 2番目のクエリは、他の250,000行を返しません。代わりに、デカルト積を作成し、750,000行の一致する行を削除しようとします。したがって、6,000,000×1,000,000〜750,000行を返そうとしています。これは、膨らんだ6×10行の結果セットです。

    あなたはおそらくこれが欲しいでしょう:

    SELECT * FROM table1
    LEFT JOIN table2 ON table2.number = table1.number
    WHERE table2.number IS NULL
    

    これにより、table1の行が返されます table2には存在しません 。

    FULL OUTER JOINにも興味があるかもしれません :

    SELECT * FROM table1
    FULL OUTER JOIN table2 ON table2.number = table1.number
    WHERE table1.number IS NULL AND table2.number IS NULL
    

    これにより、両方のテーブルで、他のテーブルと一致しない行が返されます。



    1. mysqlピボット-同じテーブルから異なる列にデータをフェッチするにはどうすればよいですか?

    2. onClickjavascript関数を介してPHPを使用してMySqlデータベースを更新する

    3. テーブルMySQLから最後に挿入されたIDを取得する方法

    4. JDBC VS Hibernate