我需要以更快的方式更新多行和相同的列名。 直到现在我正在使用它;
Begin Transaction;
Update Inventory set Quantity-=1 where ID=1;
Update Inventory set Quantity-=4 where ID=2;
Update Inventory set Quantity-=1 where ID=1;
Update Inventory set Quantity-=5 where ID=4;
Commit;
此方法效果很好,但我不快将所有查询写入同一表中的每个值。有什么建议吗? 当我阅读sql server时,不支持重复键更新...
答案 0 :(得分:1)
对于简单的更新,您可以使用CASE
语句:
UPDATE Inventory
SET Quantity += CASE ID
WHEN 1 THEN -1
WHEN 2 THEN -4
WHEN 4 THEN -5
...
END
WHERE ID IN (1,2,4);
但是,这对于大量更新而言并不有效。在这些情况下,我希望按具有相同更新的UPDATE
个值分组的“块” ID
:
UPDATE Inventory
SET Quantity += a
END
WHERE ID IN (X...);
UPDATE Inventory
SET Quantity += b
END
WHERE ID IN (Y...);
...
两者之间也可以组合。 祝你好运。