Sql DB2中是否存在“when not matched by source”?

Sql DB2中是否存在“when not matched by source”?,sql,db2,db2-luw,Sql,Db2,Db2 Luw,SQL Server 2008中的MERGE语句在源不匹配时存在,在目标不匹配时存在,示例取自 DB2中有类似的东西吗?例如,当我执行MERGE时,对于表中存在但不在查询中的任何记录数据,notmatch BY SOURCE将从表中删除数据。我目前正在寻找类似问题的答案,据我所知,DB2不支持它。 根据此处的文档(): NOT MATCHED表示要在其中的行上执行的操作 搜索条件为false或未知。仅插入或 之后可以指定signal语句 所以,如果执行了不匹配的条件,则无法使用DELETE命令。

SQL Server 2008中的
MERGE
语句在源不匹配时存在
,在目标不匹配时存在
,示例取自


DB2中有类似的东西吗?例如,当我执行
MERGE
时,对于表中存在但不在查询中的任何记录数据,
notmatch BY SOURCE
将从表中删除数据。

我目前正在寻找类似问题的答案,据我所知,DB2不支持它。 根据此处的文档():

NOT MATCHED表示要在其中的行上执行的操作 搜索条件为false或未知。仅插入或 之后可以指定signal语句

所以,如果执行了不匹配的条件,则无法使用DELETE命令。 您可能需要执行单独的查询来删除与合并条件不匹配的数据

-- MERGE statement with join conditions that produce unexpected results.
USE tempdb;
GO
BEGIN TRAN;
MERGE Target AS T
USING Source AS S
ON (T.EmployeeID = S.EmployeeID AND T.EmployeeName LIKE 'S%' 
    AND S.EmployeeName LIKE 'S%' )
WHEN NOT MATCHED BY TARGET
    THEN INSERT(EmployeeID, EmployeeName) VALUES(S.EmployeeID, S.EmployeeName)
WHEN MATCHED 
    THEN UPDATE SET T.EmployeeName = S.EmployeeName
WHEN NOT MATCHED BY SOURCE
    THEN DELETE
OUTPUT $action, Inserted.*, Deleted.*;
ROLLBACK TRAN;
GO