0
我是SQL新手,我想用來自臨時小數據庫的數據更新「大」數據庫。SQL合併更新特定屬性
CREATE PROCEDURE sp_update_DimSomeone
AS
BEGIN
MERGE DimSomeone AS V
USING DimSomeone_temp AS T
ON V.AltKey = T.Altkey
WHEN NOT MATCHED BY TARGET AND T.AltKey <> '' THEN
INSERT VALUES (AltKey, Param1, Param2, Param3)
WHEN MATCHED AND T.Param1 <> V.Param1 THEN
UPDATE SET V.Param1 = T.Param1
WHEN MATCHED AND T.Param2 <> V.Param2 THEN
UPDATE SET V.Param2 = T.Param2
WHEN MATCHED AND T.Param3 <> V.Param3 THEN
UPDATE SET V.Param3 = T.Param3
END
我已經得到了錯誤:類型的行動「WHEN MATCHED」不能出現不止一次在MERGE語句的「更新」的條款。
我明白這個消息,但我不想更新整行,只有屬性,這是不一樣的。 (例如,帶有AltKey 001的客戶在temp中更改您的地址,我想只更新Param3(例如地址),而不是整行)。
感謝您的回答!
我有10個參數,這個解決方案不是時間太長? – rbranson005
如果性能是一個問題,那麼你首先應該考慮兩件事情:1.表中是否有所有必要的索引/是否有任何損害性能的索引2.如果您拆分合並語句,可能會更快進入經典更新語句,然後是經典插入語句 – CeOnSql
感謝您的建議! – rbranson005