サイトアイコン SE日記

【ORACLE】SQLで変更されたレコードの差分・差異を取得


ここでは、バッチ処理やオンライン処理の実行前後で変化(差分や差異)したデータを確認する方法を紹介します。

SELECT文のサンプルは↓で多数紹介していますので参考にしてください。
>>【SQL】SELECT文の書き方:サンプル多数あり

変更前後のデータ差分を確認する方法

データの差分を確認するには、SQLでMINUSを使います。
MINUSを使うことで、結果1から結果2を引き、差分の結果を取得することが出来ます。

変更後のデータと変更前のデータを比較して、差分(更新されたレコード)を取得することが出来ます。

事前に準備すること

データの差分を取得するには事前に、変更前のテーブルをコピーしておく必要があります。

変更前のテーブルの作成方法は「SELECTしたレイアウト・データで簡単にテーブルを作成する方法」を使うと簡単に作成できます。

SELECT文で差分を取得する方法

SELECT文でMINUSを使います。

変更後のテーブルから、変更前のテーブルを引きます。差分として更新されたレコードと新たに追加登録されたレコードを確認することが出来ます。

select a.* from table1_after a
minus
select b.* from table1_before b;

削除されたレコードを確認するには、逆に、処理実行前のテーブルから、処理実行後のテーブルを引きます。

select b.* from table1_before b
minus
select a.* from table1_after a;

まとめ

SQLで差分を取得するには、MINUSを使います。

追加更新されたレコード:変更後から変更前のレコードを引きます
削除されたレコード:変更前から変更後のレコードを引きます

この他にも、SELECT文には様々な機能や使い方があります。
詳しくは「【SQL】SELECT文の書き方:サンプル多数あり」で解説していますのでぜひ参考にしてください。

モバイルバージョンを終了