我有两个更新语句,我们在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'
是否有可能在一个语句上进行两次更新
答案 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')