HOME >> Tips >> Oracle Tips >> SQL

2つの表を比較して存在しない行をINSERTする

 
文書番号:20261




2つの表「テーブルA」と「テーブルB」を比較し、「テーブルA」に存在しない行を「テーブルB」からINSERTするSQLです。

【SQL】


insert into テーブルA
select * 
from   テーブルB TAB_B
where not exists(
    select 'X' 
    from   テーブルA TAB_A
    where  TAB_A.キー = TAB_B.キー
)

【サンプル】

「CODE」項目で比較し、「商品マスタ」に存在しないデータを「購入リスト」からINSERTします。
商品マスタ
CODE NAME
0001 りんご
0003 みかん
0004 ばなな
購入リスト
CODE NAME
0001 りんご
0002 ぶどう
0003 みかん
0004 ばなな
商品マスタ
CODE NAME
0001 りんご
0002 ぶどう
0003 みかん
0004 ばなな

insert into 商品マスタ
select * 
from   購入リスト TAB_B
where not exists(
    select 'X' 
    from   商品マスタ TAB_A
    where  TAB_A.CODE = TAB_B.CODE
)