SQL,如果临时表中不存在行,并且主表上的日期为空,则在主表上更新日期

时间:2016-07-29 18:41:21

标签: sql-server

遇到麻烦。如果登台表上没有唯一的项目且主表上的日期为NULL,我需要更新主表上的行。

问题是我的下面的代码更新了所有具有空值的记录,而不仅仅是登台表中缺少的记录。

有没有将这两个过滤器链接在一起? 感谢

UPDATE Master_Table
SET Master_Table.Resolve_Date = DATEADD(DAY, -1, GETDATE())
WHERE NOT EXISTS (SELECT
    [Unique_Key]
FROM Staging_Table
WHERE (Master_Table.[Unique Voucher Key] = Staging_Table.[Unique Voucher Key]
AND Master_Table.Resolve_Date = ''
))

1 个答案:

答案 0 :(得分:1)

您没有正确检查NULL''NULL'之间始终存在差异。 ''表示空字符串。

试试这段代码:

UPDATE mt SET mt.Resolve_Date = DATEADD(DAY, -1, GETDATE())
FROM Staging_Table st
JOIN Master_Table mt ON mt.[Unique Voucher Key] = st.[Unique Voucher Key]
WHERE mt.Resolve_Date IS NULL