首页 > 解决方案 > 如何在一个 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在一个查询中更新该数组中包含的所有记录。你怎么能做到这一点?

标签: sql

解决方案


看起来你已经在努力解决这个问题了。您的代码最好通过多个查询来完成:

UPDATE test
SET x = 99, y=42
WHERE id=1;

UPDATE test
SET x = 98, y=41
WHERE id=2;

至于更新“所有记录”(如您所说),这是一个更难回答的问题,因为尚不清楚数据的来源。这类事情最好用脚本语言来处理。您可能还有其他选择。取决于您使用的数据库平台,但您也没有指定。


推荐阅读