SQL更新多个值
我有一些数据表ArticleSubGroup,我想用每个id的不同值更新三列(margin、minimum margin、maximummarg)。 我可以使用此更新查询,但我有3000多个idSQL更新多个值,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=
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
语句,我将创建一个临时表,并从中更新值。