根据条件更新所需的查询

时间:2015-04-14 17:10:58

标签: sql sql-server sql-server-2008

我需要一个存储过程,它将根据条件更新表上的错误消息列,如果dob为null或大于当前日期,则错误消息列应更新为“invalid dob”并且还基于id必须更新它,如果dob小于当前日期并且它不为null,则不应更新错误消息列。我需要这个查询的更新语句,我尝试了但它更新所有列而不检查条件。所以请为此查询提供解决方案,谢谢。

2 个答案:

答案 0 :(得分:0)

奇怪的要求,但它非常简单。

update SomeTable
set ErrorMessage = 'Invalid DOB'
where DOB is null
or DOB > getdate()

答案 1 :(得分:0)

尝试这样的事情,

create table TestEmployee (ID int, DOB DateTime, ErMsg varchar(20))
insert into TestEmployee (ID,DOB)
values (1, '10/02/2013'),
(2, null),
(3, '1/1/2016')

UPDATE TestEmployee SET ErMsg = 'Invalid DOB'
WHERE ID = @ID AND --This should based on your condition
DOB > GETDATE () OR DOB IS NULL

SELECT * FROM TestEmployee

Sql Fiddle Demo