合併插入更新刪除
MERGE INTO targetTable
USING sourceTable
ON (targetTable.PKID = sourceTable.PKID)
WHEN MATCHED AND (targetTable.PKID > 100) THEN
DELETE
WHEN MATCHED AND (targetTable.PKID <= 100) THEN
UPDATE SET
targetTable.ColumnA = sourceTable.ColumnA,
targetTable.ColumnB = sourceTable.ColumnB
WHEN NOT MATCHED THEN
INSERT (ColumnA, ColumnB) VALUES (sourceTable.ColumnA, sourceTable.ColumnB);
WHEN NOT MATCHED BY SOURCE THEN
DELETE
; --< Required
描述:
-
MERGE INTO targetTable
- 要修改的表 -
USING sourceTable
- 資料來源(可以是表或檢視或表值函式) -
ON ...
-targetTable
和sourceTable
之間的連線條件。 -
WHEN MATCHED
- 找到匹配項時要採取的措施 -
AND (targetTable.PKID > 100)
- 為採取行動必須滿足的附加條件
-
THEN DELETE
- 刪除targetTable
的匹配記錄 -
THEN UPDATE
- 更新SET ....
指定的匹配記錄列 -
WHEN NOT MATCHED
- 在targetTable
中找不到匹配時要採取的行動 **** -
WHEN NOT MATCHED BY SOURCE
- 在sourceTable
中找不到匹配時要採取的行動 ****
評論:
如果不需要特定的操作,則省略條件,例如刪除 WHEN NOT MATCHED THEN INSERT
將阻止插入記錄
合併語句需要終止分號。
限制:
WHEN MATCHED
不允許採取行動UPDATE
動作只能更新一行。這意味著連線條件必須產生唯一匹配。