SQL更新多个值

SQL更新多个值,sql,Sql,我有一些数据表ArticleSubGroup,我想用每个id的不同值更新三列(margin、minimum margin、maximummarg)。 我可以使用此更新查询,但我有3000多个id update articlesubgroup set margin=15, minimumMargin=5, maximumMargin=25 where id=1 update articlesubgroup set margin=10, minimumMargin=5, maximumMargin=

我有一些数据表ArticleSubGroup,我想用每个id的不同值更新三列(margin、minimum margin、maximummarg)。 我可以使用此更新查询,但我有3000多个id

update articlesubgroup set margin=15, minimumMargin=5, maximumMargin=25 where id=1
update articlesubgroup set margin=10, minimumMargin=5, maximumMargin=15 where id=2
..........................
update articlesubgroup set margin=20, minimumMargin=15, maximumMargin=30 where id=3000
有没有办法用一个简单的查询来更新数据
(通过首先列出值​​然后,所有id

对于少量的
id
值,您可以在此处使用
大小写
表达式:

UPDATE articlesubgroup
SET
    margin = CASE id WHEN 1 THEN 15
                     WHEN 2 THEN 10 ... END,
    minimumMargin = CASE id WHEN 1 THEN 5
                            WHEN 2 THEN 5 ... END,
    maximumMargin = CASE id WHEN 1 THEN 25
                            WHEN 2 THEN 15 ... END
WHERE
    id IN (1, 2, ...);
如果您确实有数千个
id
值,这意味着您的数据应该位于另一个表中的某个位置。假设存在这样一个表:

id | margin | minimumMargin | maximumMargin
1  | 15     | 5             | 25
2  | 10     | 5             | 15
然后,您可以简单地执行更新联接:

UPDATE t1
SET
    t1.margin = t2.margin,
    t1.minimumMargin = t2.minimumMargin,
    t1.maximumMargin = t2.maximumMargin
FROM articlesubgroup t1
INNER JOIN update_table t2
    ON t1.id = t2.id;

上面的更新联接代码适用于SQL Server,如果您使用的是不同的数据库,则会有所不同。这里的基本点是,如果您有许多不同的
id
值要覆盖,则单行选项并不好。相反,请将该数据放入适当的表中并使用联接。

可以这样做,但可能不值得一次性更新。您可用的工具在很大程度上取决于您使用的数据库系统。MySQL、Postgres等。您可以编辑您的问题以包含这些信息吗?您可以编写一个脚本(可能使用python)要使用数据源中的数据生成所有
INSERT
语句,我将创建一个临时表,并从中更新值。