我需要一个存储过程,根据条件更新表上的错误消息列,如果dob为null或大于当前日期,那么错误消息列应该更新为'invalid dob '并且还基于它必须被更新的id,如果dob小于当前日期并且它不为空,则不应该更新错误消息列。我需要这个查询的更新语句,我试过了,但它没有检查条件就更新了所有的列。所以请为此查询提供解决方案,谢谢。根据条件需要更新查询
回答
奇怪的要求,但它非常简单。
update SomeTable
set ErrorMessage = 'Invalid DOB'
where DOB is null
or DOB > getdate()
如果我使用条件eid = eid,那么它会更新所有列而不检查条件,它为什么会发生? – Ram
你为什么要包含谓词?这就像说1 = 1。所有的行都符合这个标准。除非希望更新所有行,否则请使用where子句仅允许要更新的行更新。 –
此代码是基于设置的。它将在没有循环或游标的情况下更新所有相关行。 –
尝试这样的事情,
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
我使用循环条件将值插入到该表中,因此,而不是使用@id,我可以直接定义类似id = id的内容吗? – Ram
请在这里发布您的整个SP。 –
@Ram为什么你使用循环来进行这样的更新? –
- 1. 根据多个条件更新查询
- 2. 写入更新根据某些条件更新列的查询
- 3. 根据条件删除不需要的SQL查询
- 4. 查询时需要根据条件从表2
- 5. 更新 - 根据条件
- 6. 如何根据条件进行更新或删除查询?
- 7. 我需要根据条件插入行
- 8. SQL查询条件更新
- 9. 需要根据时区更改Oracle sql查询
- 10. 根据条件更新mysql数据库
- 11. MySQL查询优化和更新需要
- 12. 需要帮助与sql更新查询
- 13. 我需要根据某些条件重新路由动作
- 14. 根据一些条件查询表
- 15. 查询根据列条件返回行
- 16. MySQL查询根据多个条件
- 17. Sql根据条件删除查询
- 18. 根据条件筛选查询
- 19. ElasticSearch根据条件构建查询
- 20. 根据条件SQL查询连接
- 21. Django - 根据查询更新或插入
- 22. 单个查询更新根据ID
- 23. 如何根据条件更新原子?
- 24. 根据条件依次更新一列
- 25. 如何根据条件更新行
- 26. 如何根据条件更新记录?
- 27. 根据条件更新SQL表。
- 28. SQL:根据条件更新特定行
- 29. 根据条件更新声明
- 30. 如何根据条件更新列
能否请您发布一些样本数据,预期输出,无论您有试过吗? –
update e set errormsg ='invalid dob'from emp e where eid = eid and exists(select'x'from emp where dob> getdate()or dob is null) – Ram
请更新原始文章。同时发布预期的输出。 –