两个更新单个语句

时间:2017-01-13 19:15:19

标签: sql-server tsql

我有两个更新语句,我们在SQL服务器上运行它们就像

UPDATE dbo.c_Account
SET Ct = Ct-1
Where 
Acc = 'IT' OR Acc = 'gt'

UPDATE dbo.c_Account
SET Ct = Ct-3
Where 
Acc = 'ABC'

是否有可能在一个语句上进行两次更新

3 个答案:

答案 0 :(得分:8)

你可以这样组合:

UPDATE t SET
    Ct = Ct - CASE WHEN t.Acc IN ('IT','gt') THEN 1 ELSE 3 END
FROM dbo.c_Account t
WHERE t.Acc IN ('IT','gt','ABC') 

除了它现在将作为一个原子操作运行,并且不需要外部事务之外,几乎没有什么好处。

答案 1 :(得分:1)

     UPDATE dbo.c_Account
     SET Ct  = case Acc when 'IT' then  (Ct-1 )
     when 'GT' then ct-1
     when 'abc' then  ct-3
     else ct
     end

  WHERE t.Acc IN ('IT','gt','ABC') 

答案 2 :(得分:0)

UPDATE dbo.c_Account
SET Ct = case
when (Acc = 'IT' OR Acc = 'gt') then Ct-1
When Acc = 'ABC' then Ct-3
Else ct
End

以上将更新默认不更改的所有记录。您可以添加where where statment来仅更新您需要的那些,例如     其中acc('IT','gt','ABC')