sql - 如何在一个 SQL 查询中更新动态数量的记录?
问题描述
更新查询,如:
UPDATE test
SET x = (case when id = 1 then 99
when id = 2 then 98
end),
y = (case when id = 1 then 42
when id = 2 then 41
end)
将更新多条记录,其中每条记录的 x 和 y 属性具有不同的值。但是如果我需要更新的记录数是动态的呢?为简单起见,假设我有一个id
值数组。我想id
在一个查询中更新该数组中包含的所有记录。你怎么能做到这一点?
解决方案
看起来你已经在努力解决这个问题了。您的代码最好通过多个查询来完成:
UPDATE test
SET x = 99, y=42
WHERE id=1;
UPDATE test
SET x = 98, y=41
WHERE id=2;
至于更新“所有记录”(如您所说),这是一个更难回答的问题,因为尚不清楚数据的来源。这类事情最好用脚本语言来处理。您可能还有其他选择。取决于您使用的数据库平台,但您也没有指定。