SQL Server 2005 で一括アップサートする方法はありますか? 2008 年の MERGE に似たものがあれば完璧です。セッション完了時にメインテーブルと調整する必要がある一時ワークスペースとして機能するテーブルが 1 つあります。2008 年には、マージはこれに最適でしたが、私が見た 2005 年の方法は、一括ではなく、個別のアップサート用のものだけでした。アイデア?
質問する
1807 次
1 に答える
5
最初に更新を行い、次に挿入を行います。このようなもの。
update TargetTable
set Col1 = SourceTable.Col1,
Col2 = SourceTable.Col2
from SourceTable
where TargetTable.ID = SourceTable.ID
insert into TargetTable(Col1, Col2)
select Col1, Col2
from SourceTable
where SourceTable.ID not in (select ID from TargetTable)
アップデート:
主キーに複数の列がある場合は、not exists
代わりに使用できます。
update TargetTable
set Col1 = SourceTable.Col1,
Col2 = SourceTable.Col2
from SourceTable
where TargetTable.ID1 = SourceTable.ID1 and
TargetTable.ID2 = SourceTable.ID2
insert into TargetTable(Col1, Col2)
select Col1, Col2
from SourceTable
where not exists (select *
from TargetTable
where TargetTable.ID1 = SourceTable.ID1 and
TargetTable.ID2 = SourceTable.ID2)
于 2012-05-29T15:52:14.953 に答える