对于我找不到答案的MERGE
语法有个问题。MERGE语法SQL Server 2012错误
我有以下情况:
第一步:
create temp table #TempTbl
第二步:MERGE
:
MERGE INTO T1 target
USING T2 AS source ON (bunch of columns)
WHEN MATCHED
UPDATE
SET some columns from target equal some columns from source
WHEN NOT MATCHED BY TARGET
THEN INSERT (bunch of columns)
VALUES (bunch of columns from SOURCE)
OUTPUT $action, deleted.* into #TempTbl
我需要知道的是我上面的步骤不会我只找到空数据在我的临时表中#TempTbl
,因为我只说WHEN NOT MATCHED ... THEN INSERT
,而不是DELETE
?
第二个问题,什么类型的列应该$action
是,因为我有错误消息:
列名或提供的值不匹配表定义
虽然我试图从我的表中定义第一列varchar(100)
,nvarchar(100)
,但没有运气。但是,如果我省略了$action
字段,那么我的声明就有效。
'@ action'必须是相同的数据类型作为你的第一列'#TempTbl'。要存储'deleted'的东西,你必须删除一些东西 - 比如'当源不匹配时候THEN DELETE' – gofr1
@BogdanM你想存储更改和/或插入的值吗? – jpw
好的,应该是什么类型?正如我写的,我已经尝试过,但没有运气 – BogdanM