更新记录匹配和不匹配?

时间:2018-09-25 20:53:21

标签: sql-server tsql

我有一个TSQL存储过程,该存储过程对必须符合某些条件的表进行UPDATE。这会将“ ProcessDate”更新为GETDATE()。但是,所有不匹配的数据都永远不会更新此ProcessDate(因为没有匹配,因此它保持为NULL)。有没有一种方法可以在不相同的记录上更新ProcessDate?我当前的解决方案是在第一个运行后返回一个简单的添加附加的UPDATE语句,然后将所有ProcessDate = NULL更新为GETDATE(),但是不确定是否有更好的方法吗?谢谢。

2 个答案:

答案 0 :(得分:0)

听起来像您可以使用MERGE,其中一个用于WHEN MATCHED,一个用于WHEN NOT MATCHED。您可以控制哪种UPDATE适用于哪种情况。如果您提供到目前为止的查询,我可以根据需要帮助创建MERGE。

答案 1 :(得分:0)

您可以使用case并将选择条件从where部分移到那里:

update t set ProcessDate = case
    when <MyCriteriaMet> then getdate()
    else @MyOtherValue
end
from dbo.MyTable t;