2つの表を比較して片方にない行を他方からDELETEする(DELETE ~ FROM)
文書番号:20358
「テーブルA」に存在しない行は「テーブルB」からも削除するSQLです。
2つの表「テーブルA」と「テーブルB」を比較し、「テーブルA」に存在するもののみ「テーブルB」に残す場合に。
【SQL】
DELETE TABLE_B
FROM TABLE_B
LEFT OUTER JOIN TABLE_A
ON TABLE_A.CODE = TABLE_B.CODE
WHERE TABLE_A.CODE IS NULL
【サンプル】
「CODE」項目で比較し、「商品マスタ」に存在しないものは「購入リスト」から削除します。
商品マスタ
|
購入リスト
|
→ |
購入リスト
|
DELETE 購入リスト
FROM 購入リスト
LEFT OUTER JOIN 商品マスタ
ON 商品マスタ.CODE = 購入リスト.CODE
WHERE 商品マスタ.CODE IS NULL
「テーブルA」に存在し、「テーブルB」に存在しないものを「テーブルA」からINSERTする場合には「MERGE」文を使用します。
・条件が一致する場合はUPDATE、一致しない場合はINSERTを実行する(MERGE)
・条件が一致する場合はUPDATE、一致しない場合はINSERTを実行する(MERGE)