【发布时间】:2022-01-02 11:29:34
【问题描述】:
我有数据从多个其他表流入一个表让我们说:Table_A 然后我有一个合并存储过程,它从表 A 中获取数据并将其与表 B 合并。
但是,似乎有些不对劲。如果我截断并加载数据,它工作正常,但如果我不截断和加载,并且只是每小时获取查询,我会收到错误消息
消息 8672,级别 16,状态 1,过程 Merge_Table_A,第 4 行 [批处理开始第 0 行] MERGE 语句多次尝试更新或删除同一行。当目标行匹配多个源行时会发生这种情况。 MERGE 语句不能多次 UPDATE/DELETE 目标表的同一行。优化 ON 子句以确保目标行最多匹配一个源行,或使用 GROUP BY 子句对源行进行分组。
我该如何克服这个问题?
我希望能够增量加载数据而不是截断加载,但同时有一个存储过程,可以更新或插入或不关心行是否已存在。
【问题讨论】:
-
你能提供你的示例代码和数据吗?
-
您对错误消息和解决方案有何困惑?您不能有多个与目标记录匹配的源记录,因此您需要合并您的源记录,以便在执行合并之前每个匹配的“键”只有一条记录
标签: sql-server azure sql-merge