ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

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);
  1. TBL1のCLM1にTBL2のCLM1が有った場合、CLM2を更新
  2. 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);
  1. TBL1のCLM1に'A'が存在する場合は更新
  2. 存在しない場合は新規で投入