テストテーブル作成
SQL
--テストテーブル作成
create table #test
(
[number] int,
[score] int
)
--テストデータ挿入
insert into
#test
values
(1,20),
(2,48),
(3,87)
コード例
MERGE INTOは通常、単体テーブルで使用するものではありませんが、
仮表([b])を使うことで、単一テーブルでもMERGE INTOを使うことができます。
SQL
MERGE INTO
#test as [a]
USING
(select null as n) as [b] --仮表
ON
([a].[number]= 4)
--一致
when matched then
update set [score] = 82
--不一致
when not matched then
INSERT ([number],[score]) Values(4,90);
1回目の実行結果はnumber=4のレコードがないため、INSERTが実行されます。
number score
1 20
2 48
3 87
4 90
2回目の実行結果はnumber=4のレコードがあるため、UPDATEが実行されます。
number score
1 20
2 48
3 87
4 82