2

SQL Server 2005 で一括アップサートする方法はありますか? 2008 年の MERGE に似たものがあれば完璧です。セッション完了時にメインテーブルと調整する必要がある一時ワークスペースとして機能するテーブルが 1 つあります。2008 年には、マージはこれに最適でしたが、私が見た 2005 年の方法は、一括ではなく、個別のアップサート用のものだけでした。アイデア?

4

1 に答える 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 に答える