前提・実現したいこと
Oracle DBにて2つの同じ列を持つテーブルを比較し、追加もしくは差分がある場合、フラグを立てる処理を行いたい。
削除された場合を考慮する必要はなく、追加と差分は同じ動作としたい。
テーブル例
テーブルA
|No|Data_A|Data_B|Data_C|FLAG|
|:--|:--:|--:|0|
|1|AAA|AAA|AAA|0|
|2|BBB|ZZZ|BBB|0|
|3|CCC|CCC|ZZZ|0|
|4|DDD|DDD|DDD|0|
テーブルB
|No|Data_A|Data_B|Data_C|FLAG|
|:--|:--:|--:|
|1|AAA|AAA|AAA|0
|2|BBB|BBB|BBB|0
|3|CCC|CCC|CCC|0
処理後のテーブルA
|No|Data_A|Data_B|Data_C|FLAG|
|:--|:--:|--:|0|
|1|AAA|AAA|AAA|0|
|2|BBB|ZZZ|BBB|1|
|3|CCC|CCC|ZZZ|1|
|4|DDD|DDD|DDD|1|
CREATE TABLE TableA( No NUMBER(12) DEFAULT 0 NOT NULL, primary key(No), Data_A VARCHAR2(100), Data_B VARCHAR2(100), Data_C VARCHAR2(100), FLAG VARCHAR2(1)); COMMENT ON COLUMN TableA.No IS '主キー'; COMMENT ON COLUMN TableA.Data_A IS 'データA'; COMMENT ON COLUMN TableA.Data_B IS 'データB'; COMMENT ON COLUMN TableA.Data_C IS 'データC'; COMMENT ON COLUMN TableA.FLAG IS 'フラグ(0 or 1)'; CREATE TABLE TableB( No NUMBER(12) DEFAULT 0 NOT NULL, primary key(No), Data_A VARCHAR2(100), Data_B VARCHAR2(100), Data_C VARCHAR2(100), FLAG VARCHAR2(1)); COMMENT ON COLUMN TableB.No IS '主キー'; COMMENT ON COLUMN TableB.Data_A IS 'データA'; COMMENT ON COLUMN TableB.Data_B IS 'データB'; COMMENT ON COLUMN TableB.Data_C IS 'データC'; COMMENT ON COLUMN TableB.FLAG IS 'フラグ(0 or 1)'; Insert into TableA VALUES('1','AAA','AAA','AAA','0'); Insert into TableA VALUES('2','BBB','ZZZ','BBB','0'); Insert into TableA VALUES('3','CCC','CCC','ZZZ','0'); Insert into TableA VALUES('4','DDD','DDD','DDD','0'); Insert into TableB VALUES('1','AAA','AAA','AAA','0'); Insert into TableB VALUES('2','BBB','BBB','BBB','0'); Insert into TableB VALUES('3','CCC','CCC','CCC','0');
試したこと
minusを用いることで差分と追加分を取得できることは分かるのですが、UPDATEと組み合わせた場合の処理がわからないためご教示お願いします。
回答4件
あなたの回答
tips
プレビュー