两个更新有一个条件

时间:2017-05-05 14:20:27

标签: sql sql-server

我想在一个语句中一起进行2次更新,我希望在事务子句中使用更新将有助于此。但事实并非如此。 所以下面,我期待它找到记录并更新它。但它确实是第一个,当它进入第二个时,价值"已过期"已经是0了。 我怎样才能做到这一点? (docid =' Syn25331'只是用一条记录进行测试。但我想要成千上万的记录,因此没有docid =' Syn25331'条件)

BEGIN TRANSACTION;

Update main
Set expired = 0
where Expires > GETDATE() and Expired =1 and docid ='Syn25331'


Update main
Set TractorID = AssetID
where Expires > GETDATE() and Expired =1 and docid ='Syn25331'

COMMIT;

2 个答案:

答案 0 :(得分:5)

我认为你只需要一个逗号来更新两列:

Update main
Set expired = 0, TractorID = AssetID
where Expires > GETDATE() and Expired = 1

答案 1 :(得分:2)

您可以在单个更新语句中执行此操作

UPDATE main
SET    expired = 0,
       TractorID = AssetID
WHERE  Expires > GETDATE() AND
       Expired = 1