遇到麻烦。如果登台表上没有唯一的项目且主表上的日期为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 = ''
))
答案 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