MySQLで2つのテーブルのレコードの差分を確認するクエリ

本記事はこんな人にオススメ テーブルの差分取得できん人 差分取れるけどどこで発生してんのか見づらいわ!と感じでいる人 他のDBでは差分抽出のやり方わかるけどMySQLでどうやんの?って人 経緯 業務でMySQLのテーブル間の差分を抽出する作業があった際の取り組みをまとめる。 概要 MySQLにおける2つのテーブルのレコードの差分を抽出するクエリをまとめる。 実際に例としてテーブルを用意し、どのようにデータが取得されるのかを記載する。 ただ差分を取得するだけでなく、どこでどのような差分が発生しているかまでフォーカスする。 検証 今回は、実際に以下のuser_example1テーブルとuser_example2テーブルを作成し実際の出力内容の方を確認していく。 user_example1テーブル id username email password 1 Sato sato@example.com sato123 2 Suzuki suzuki@example.com suzuki123 3 Takahashi takahashi@example.com takahashi123 4 Tanaka tanaka@example.com tanaka123 5 Ito ito@example.com ito123 user_example2テーブル id username email password 1 Sato sato@example.com sato123 2 Suzuki suzuki@example.com suzuki123 3 Takahashi takahashi@example.com takahashi123 4 Takahashi tanaka@example.com tanaka123 5 NULL ito@example.com ito123 差分: id=4のusernameが異なる id=5のusernameがNULLになっている 1. MySQL 8.0.31以降の場合 EXCEPT演算子を使用することで差分を簡単に取得できる ...

May 21, 2025