SQL SERVERでのMERGE文
MS SQL SERVER 2008からサーポートされたMERGEステートメントの使い方
MERGE TBL1 USING TBL2 ON (TBL1.CLM1 = TBL2.CLM1) WHEN MATCHED THEN UPDATE SET TBL1.CLM2 = TBL2.CLM2 WHEN NOT MATCHED THEN INSERT (TBL1.CLM1, TBL1.CLM2) Values (TBL2.CLM1, TBL2.CLM2);
- TBL1のCLM1にTBL2のCLM1が有った場合、CLM2を更新
- TBL1のCLM1にTBL2のCLM1がなかった場合、TBL1に新規行を挿入する
比較対象がテーブルではない場合の例
一般的にはこの例が使われる場合が多いかも
MERGE TBL1 USING (SELECT 'A' CLM1, 'B' CLM2) TBL2 ON (TBL1.CLM1 = TBL2.CLM1) WHEN MATCHED THEN UPDATE SET TBL1.CLM2 = TBL2.CLM2 WHEN NOT MATCHED THEN INSERT (TBL1.CLM1, TBL1.CLM2) Values (TBL2.CLM1, TBL2.CLM2);
- TBL1のCLM1に'A'が存在する場合は更新
- 存在しない場合は新規で投入