Oracle Database 別テーブルから更新と挿入を行う

Oracle Database 別テーブルから更新と挿入を行う

Oracle Databaseで、別テーブルから更新と挿入を行う手順を記述してます。「MERGE」で可能です。ここでは、実際に実行した結果を画像で掲載してます。

環境

  • OS windows11 home
  • Oracle Database 21c Express Edition
  • SQL Developer 21.2.1.204

手順

別テーブルから更新と挿入を行うには、「MERGE」を使用します。

MERGE INTO テーブル1 USING テーブル2
ON テーブル1.列1 = テーブル2.列1

WHEN MATCHED THEN
 UPDATE SET
  列名 = テーブル2.列名, 列名 = テーブル2.列名

WHEN NOT MATCHED THEN
 INSERT (列名, 列名 ・・・ )
 VALUES (テーブル2.列名, テーブル2.列名 ・・・ );

実際に、以下のテーブル「SAMPLETBL2」を使って「SAMPLETBL」にデータがあれば更新して、なければ挿入してみます。

テーブル「SAMPLETBL」

テーブル「SAMPLETBL2」

実際に実行してみます。

MERGE INTO SAMPLETBL USING SAMPLETBL2 
ON ( SAMPLETBL.id = SAMPLETBL2.id )

WHEN MATCHED THEN UPDATE SET
  name = SAMPLETBL2.name, age = SAMPLETBL2.age
WHEN NOT MATCHED THEN 
   INSERT (id, name, age) 
   VALUES (SAMPLETBL2.id, SAMPLETBL2.name, SAMPLETBL2.age);

実行結果

更新と挿入がされているかを確認してみます。

SELECT * FROM SAMPLETBL;

実行結果を見るとデータが更新と挿入されていることが確認できます。