条件が一致する場合はUPDATE、一致しない場合はINSERTを実行する(MERGE)
文書番号:20346
SQL Server 2008 から MERGER ステートメントを使用することができるようになりました。
2つのテーブルを比較し、条件にした項目が一致する場合はUPDATE、一致しない場合はINSERTを1文で実行できます。
【SQL】
MERGE TAB_A
USING TAB_B
ON TAB_A.Column1 = TAB_B.Column1
WHEN MATCHED THEN
UPDATE
SET TAB_A.Value1 = TAB_B.Vaue1
,TAB_A.Value2 = TAB_B.Vaue2
WHEN NOT MATCHED THEN
INSERT (
Column1
,Value1
,Value2
)
VALUES (
TAB_B.Column1
,TAB_B.Value1
,TAB_B.Value2
);
MERGE TAB_A
USING (SELECT @KEY1 AS キー1
,@KEY2 AS キー2
) TAB_B
ON TAB_A.Column1 = TAB_B.キー1
AND TAB_A.Column2 = TAB_B.キー2
WHEN MATCHED THEN
UPDATE
SET TAB_A.Value1 = @VAL_1
,TAB_A.Value2 = @VAL_2
WHEN NOT MATCHED THEN
INSERT (
Column1
,Column2
,Value1
,Value2
)
VALUES (
TAB_B.キー1
,TAB_B.キー2
,@VAL_1
,@VAL_2
);
※MERGE ステートメントは必ず最後に;(セミコロン)を指定します。
指定しないと以下のエラーになります。
===========================================================
メッセージ 10713、レベル 15、状態 1、行 17
MERGE ステートメントは、セミコロン (;) で終わる必要があります。
===========================================================
指定しないと以下のエラーになります。
===========================================================
メッセージ 10713、レベル 15、状態 1、行 17
MERGE ステートメントは、セミコロン (;) で終わる必要があります。
===========================================================