ホームページ  >  記事  >  データベース  >  mysqlで設定された差分を見つける方法

mysqlで設定された差分を見つける方法

藏色散人
藏色散人オリジナル
2021-12-01 15:16:0613668ブラウズ

差分セットを見つけるための Mysql メソッド: 1. not contains を使用して 2 つのテーブルの差分セットをフィルタリングします; 2. LEFT JOIN 接続の後に生成された空のフィールド値を通じて 2 つのテーブルの差分セットをフィルタリングします。

mysqlで設定された差分を見つける方法

この記事の動作環境: Windows 7 システム、mysql バージョン 8.0、Dell G3 コンピューター。

#mysql で差分セットを見つける方法は?

mysql でフィールド数が異なる 2 つのテーブルで、一貫性のないデータを持つレコードをクエリする方法

一般に、NOT EXISTS (非存在句) または LEFT JOIN 左 (右) 接続を使用して空のフィールド値を生成し、2 つのテーブル間の差異をフィルター処理できます

1、NOT EXISTS

not selected 比較フィールドにインデックスが存在する場合、その操作効率は非常に高くなりますが、インデックスのない大規模なデータテーブル上で実行すると、操作効率が非常に悪くなります。この場合、使用を避ける必要があります。

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 に変換しないと、出力レコード セットが正しくない可能性があります。

SELECT
    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 つの方法があります。インデックスが利用可能な場合、存在しない場合の効率は左結合よりも高くなります。逆に、左結合の方が効率的です。

[関連する推奨事項:

mysql ビデオ チュートリアル ]

以上がmysqlで設定された差分を見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。