異なるフィールドを持つ2つのテーブルでデータに矛盾があるレコードをクエリする方法
通常、NOT EXISTS(存在しない句)またはLEFT JOINの左(右)接続を使用して、2つのテーブルの違いをフィルタリングする空のフィールド値を生成できます。
1、存在しない
一致するフィールドに使用可能なインデックスがある場合は存在しませんが、その操作効率は非常に高くなりますが、インデックスのない大きなデータテーブルで実行すると、操作効率が非常に低下するため、使用しないでください。
SELECT * FROM smd_employee t1 WHERE NOT EXISTS(SELECT 1 FROM asd_user_account t2 WHERE t2.u_phone = t1.employee_phone);
2、LEFT JOIN
2つのテーブル接続を実装する必要があると、レコード行の出力セットのデカルト効果が増加する可能性があるため、左(右)接続を使用して差分セットを見つけます。
1対1でも1対多でもない場合は、接続する前に多対多の状況を多対1として扱う必要があります。そうしないと、出力レコードセットが正しくない場合があります。
選択 a。* FROM smd_employee a LEFT JOIN asd_user_account b ON b.u_phone = a.employee_phone WHERE b.u_phone IS NULL ;
差分セットを見つける2つの方法。インデックスが使用可能な場合、存在しない場合の効率は左結合よりも高くなります。それ以外の場合は、左結合の方が効率的です。
元の参照:https : //zhidao.baidu.com/question/565882811554863764.html