對於我找不到答案的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