.log

miscellaneous memorandum

MERGEステートメント

June 12, 2010
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 列リストに、マルチパート識別子を含めることはできません。代わりに、シングルパート識別子を使用してください。