我想更新具有两个日期的记录,如果我没有要更新的新值,则保留现有数据不变。
这是一个示例表记录:
id last_foo last_bar
-- ---------- ----------
1 2010-05-30 2010-05-30
我正在使用的查询:
UPDATE sampledates
SET last_foo = @LastFoo,
last_bar = @LastBar
WHERE id = @ID;
如果我的 可为空的日期时间
LastFoo
或 LastBar
为空,我想保留现有的 SQL 值,否则更新。例如,假设我正在使用以下值更新此记录(这是 C#,但适用任何语言):
DateTime? LastFoo = new DateTime('2010-06-04');
DateTime? LastBar = null;
我希望记录是:
id last_foo last_bar
-- ---------- ----------
1 2010-06-04 2010-05-30
我意识到如果值为空,我可以更改我的查询文本以省略第二列,但我想知道是否有一种方法可以让查询保持原样并指定我不更改指定的列。
最佳答案
尝试
UPDATE sampledates
SET last_foo = COALESCE(@LastFoo,last_foo ),
last_bar = COALESCE(@LastBar,last_bar )
WHERE id = @ID;
关于sql - 如何更新 SQL 中的选择性字段(保留一些不变)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2978008/