【发布时间】:2020-01-31 19:11:29
【问题描述】:
当收集器的数据与最终表不同时,我正在尝试对我的表进行简单更新。我正在使用下面的代码。当第一个SELECT 运行时,它告诉我这两列都有数据。在MERGE 语句运行后,我执行了新的SELECT,两列仍显示为NULL。合并没有更新任何内容。
我是否以某种方式弄乱了MERGE 语法?
我的生产代码还包括WHEN NOT MATCHED和其他项目。这只是一个演示问题的小例子。
SELECT l.Region_Name, l.Region_Code
FROM dbo.Collector_Locations l
WHERE l.id = 1038
MERGE INTO dbo.Locations AS T
USING dbo.Collector_Locations S ON T.id = S.id
WHEN MATCHED AND (T.Region_Name <> S.Region_Name OR T.Region_Code <> S.Region_Code)
THEN
UPDATE SET T.Region_Name = S.Region_Name,
T.Region_Code = S.Region_Code;
SELECT l.Region_Name, l.Region_Code
FROM dbo.Locations l
WHERE l.id = 1038
【问题讨论】:
-
您是否运行过连接查询以确保 id 匹配并且连接后两列中有数据?
-
@JoeC 是的,您可以在我的示例中看到我从两个表中选择了一个特定的 ID,并且两个表中都有数据。它只是不更新。
标签: sql-server sql-merge