MySQLは2つのテーブルの違いを検出します(非交差)

異なるフィールドを持つ2つのテーブルでデータに矛盾があるレコードをクエリする方法

通常、NOT EXISTS(存在しない句)またはLEFT JOINの左(右)接続を使用して、2つのテーブルの違いをフィルタリングする空のフィールド値を生成できます。

1、存在しない 

一致するフィールドに使用可能なインデックスがある場合は存在しませんが、その操作効率は非常に高くなりますが、インデックスのない大きなデータテーブルで実行すると、操作効率が非常に低下するため、使用しないでください。

SELECT 
    *  
FROM 
    smd_employee t1 
WHERE 
    NOT  EXISTSSELECT  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

おすすめ

転載: www.cnblogs.com/bigroc/p/12750005.html