MERGE [TenantSync].[ReportingSync] AS MyTarget
USING [TenantSync].[ReportingSyncStage] AS MySource
ON MySource.[TenantID] = MyTarget.[TenantID] AND MySource.[ServiceID] = MyTarget.[ServiceID]
WHEN MATCHED AND [MyTarget].[Modified] <> MySource.[Modified]
THEN UPDATE SET [FTOP_EntitlementCount] = MySource.FTOP_EntitlementCount, Modified = MySource.Modified
WHEN NOT MATCHED BY TARGET
THEN INSERT ([TenantID], [ServiceID], [FTOP_EntitlementCount], [Modified])
VALUES (MySource.[TenantID], MySource.[ServiceID], MySource.[FTOP_EntitlementCount], MySource.[Modified])
WHEN NOT MATCHED BY SOURCE
THEN DELETE
我意识到我正在将所有行从MySource更新到MyTarget,即使修改日期没有改变,所以我添加了“AND [MyTarget]。[Modified]&lt;&gt; MySource。[Modified]”到WHEN匹配期望它更新修改日期不匹配的记录。我将ReportingSync中的所有修改日期设置为null。运行合并语句,它会快速处理,没有受影响的记录。
想法?
答案 0 :(得分:0)
不是&#34;是&#34; NULL <> 'some non-null value'
。
当使用ANSI NULLS(SQL Server的默认设置)时,关于NULL的唯一事情就是IS NULL
。