合併插入更新刪除
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動作只能更新一行。這意味著連線條件必須產生唯一匹配。