2020/02/01SQLのmerge文で、更新と追加を行うサンプルです。merge文を使用したサンプル1つのテーブルでデータが存在しない時のみinsertするサンプルmerge文(更新と追加を行う)以下は、merge文の使用例です。テーブルAに指定したキーのデータが存在した場合、テーブルAをupdateする。テーブルAに指定したキーのデータが存在しない場合、テーブルBの値でテーブルAにinsertする。theninsert文等テーブルAのみにあるデータは、条件にかからず何も更新しません。thenは省略可能です。merge文を使用したサンプルmerge文を使用したサンプルです。以下、2つのテーブルがあるとします。1つめのsyainテーブルです。sato2つめのsyain_beforeテーブルです。takahashi以下のSQLを実行します。)values(b.id,b.name,'insert');13行目のupdateは、1行目のsyainテーブルに対してupdateします。18行目のinsertは、1行目のsyainテーブルに対してinsertします。両方ともテーブル名はありません。19~22行目は、通常のinsert文と同じくテーブルの全項目をvaluesで記述する場合は省略できます。結果は、以下のとおりです。insertsyainテーブルとsyain_beforeテーブルで一致した2行目はupdateされます。syain_beforeテーブルのみにある4行目は、insertされました。syainテーブルのみにある1,3行目は、何も更新されません。1つのテーブルでデータが存在しない時のみinsertするサンプル1つのテーブルでデータが存在しない時のみinsertするサンプルです。以下、テーブルがあるとします。sato以下のSQLを実行します。入力値を想定);3行目は、dual表で検索していますが他の箇所では使用していません。5行目の6は入力値を想定しています。このとき、syainテーブルにidが6のデータが存在しなければ8行目以下のinsert文が実行されます。10~13行目は、通常のinsert文と同じくテーブルの全項目をvaluesで記述する場合は省略できます。結果は、以下のとおりです。上記merge文を初回実行した時のみ、id=6のデータがinsertされます。