トップページに戻る
次のSQLServerのサンプルへ
前のSQLServerのサンプルへ
3-2 merge文
SQLパズル
MasterT
ID Val
-- ------
1 吉法師
2 竹千代
3 牛若丸
MasterTに下記の内容をmerge(あれば更新、なければinsert)する。
MasterTのプライマリキーはID列とする。
mergeする内容
ID Val
-- --------
3 源義経
4 明智光秀
更新結果
ID Val
-- ------
1 吉法師
2 竹千代
3 源義経
4 明智光秀
データ作成スクリプト
create table MasterT(
ID int,
Val VarChar(10));
insert into MasterT values(1,'吉法師'),
(2,'竹千代'),
(3,'牛若丸')
go
SQL
merge into MasterT a
using (select 3 as ID,'源義経' as Val union all
select 4 ,'明智光秀') b
on (a.ID = b.ID)
when matched then
update set a.Val = b.Val
when not matched then
insert (ID,Val)
values (b.ID,b.Val);
go
解説
SQL2003のmerge文が、SQLServer2008以降ではサポートされてます。
MSDN --- merge文