有没有办法用不同的值更新同一个表中的多行



使用Microsoft SQL 2014,是否有方法更新同一表中具有不同值的多行?

我有一个组件成本表,我需要定期更改所有单个组件的成本。

目前,我做以下工作:

UPDATE table1 SET cost = '250' WHERE component = 'bicycle'
UPDATE table1 SET cost = '90' WHERE component = 'chainsaw'
UPDATE table1 SET cost = '0.10' WHERE component = 'overripe banana'

等等。

在我看来,这似乎有点低效,那么有更好的方法吗?类似于INSERT INTO表1 VALUES((,但用于UPDATE语句。

因此,我可以运行一个更新多个不同行的语句,而不是运行10000个UPDATE语句。

也许它并不低效,这也很好。

感谢

您仍然可以使用表值构造函数(就像使用INSERT一样(和JOIN来创建更新:

UPDATE old
SET old.cost = new.cost
FROM table1 old  
INNER JOIN (VALUES 
('bicycle', 250.00), 
('Chainsaw', 90.00), 
('overripe banana', 0.10)
) AS new(Component,Cost) ON new.Component = old.Component

我也在寻找解决方案,但我找不到。。我后来想出了这个解决方案,以防有人也有问题。。

UPDATE table1 
SET cost = CASE component 
WHEN 'bicycle' THEN '250' 
WHEN 'chainsaw' THEN '90' 
WHEN 'overripe banana' THEN '0.10' 
ELSE cost 
END
WHERE component IN ('bicycle', 'chainsaw', 'overripe banana');

最新更新