SQL Server 2008からの新機能。
(Oracleには前からあった)
MERGE table1 USING table2 ON ( table1.field1 = table2.field1 ) WHEN MATCHED THEN UPDATE SET table1.field2 = table2.field1 WHEN NOT MATCHED THEN INSERT ( field1, field2 ) VALUES ( table2.field1, table2.field2 );* 「マッチしないときだけ追加」したい場合はWHEN MATCHED THENのブロックをなくせばよい(逆の場合はNOTの方) * INSERT句をの追加先フィールド名をテーブル名で修飾すると下記のようなエラーが出る。 > メッセージ 10739、レベル 15、状態 1、行 14 > > MERGE ステートメントで使用される INSERT 列リストに、マルチパート識別子を含めることはできません。代わりに、シングルパート識別子を使用してください。