gpt4 book ai didi

sql - DB2 中是否存在 `when not matched by source`?

转载 作者:行者123 更新时间:2023-12-05 04:15:55 25 4
gpt4 key购买 nike

在 SQL Server 2008 的 MERGE 语句中存在 WHEN NOT MATCHED BY SOURCEWHEN NOT MATCHED BY TARGET,示例取自 Inserting, Updating, and Deleting Data by Using MERGE

-- 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

DB2 中有这样的东西吗?例如,当我执行 MERGE 并且对于表中存在但不在查询中的任何记录数据时,NOT MATCH BY SOURCE 它将从表中删除数据。

最佳答案

我目前正在寻找类似问题的答案,据我所知,DB2 不支持它。根据此处的文档(http://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.sql.ref.doc/doc/r0010873.html):

NOT MATCHED Indicates the operation to be performed on the rows where the ON search condition is false or unknown. Only INSERT or signal-statement can be specified after THEN.

因此,如果执行了 NOT MATCHED 条件,则不能使用 DELETE 命令。您可能需要执行单独的查询来删除不符合合并条件的数据。

关于sql - DB2 中是否存在 `when not matched by source`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30050980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com