2つのテーブルのデータ差異を MySQL で比較する方法
MySQL の INNER JOIN や LEFT JOIN、RIGHT JOIN などの結合を使用すると、2 つのテーブルのデータ間の相違を比較できます。
以下のやり方で内結合を使用して2つのテーブル間のデータの差異を比較する方法です。
SELECT table1.column1, table1.column2, table2.column1, table2.column2
FROM table1
INNER JOIN table2 ON table1.id = table2.id
WHERE table1.column1 <> table2.column1 OR table1.column2 <> table2.column2;
上記のクエリは 2 つのテーブルで異なる値を持つ行を返します。table1、table2 を実際に比較したいテーブル名に、column1、column2 を比較したい実際の列名に、id を 2 つのテーブルを結合する共通の列に置き換える必要があります。
別のテーブルに存在しないデータだけを比較したい場合は外部結合を使用します。例えば、table1に存在するデータでtable2に存在しないデータを比較するにはLEFT JOINを使用します。
SELECT table1.column1, table1.column2
FROM table1
LEFT JOIN table2 ON table1.id = table2.id
WHERE table2.id IS NULL;
上記クエリを実行すると、テーブル1には存在するもののテーブル2には存在しないデータが返されます。テーブル1とテーブル2は比較対象の実際のテーブル名に、column1とcolumn2は比較対象の実際の列名に、idは2つのテーブルを結ぶ共通のフィールドに置き換えてください。
類似に、Table1 にはなくて、Table2 にあるデータを、RIGHT JOIN を使って比較することも可能です。
お役に立てれば幸いです!