在MySQL中更新1列中的多行

时间:2012-02-19 04:37:55

标签: mysql sql sql-update

同时更新MySQL中多行的正确查询是什么?

我只更新了1列:

UPDATE example_table SET variable1 = 12 WHERE id=1;
UPDATE example_table SET variable1 = 42 WHERE id=2;
UPDATE example_table SET variable1 = 32 WHERE id=3;
UPDATE example_table SET variable1 = 51 WHERE id=4;

这似乎效率低下,或者如果它是最有效的查询,请告诉我:)

4 个答案:

答案 0 :(得分:13)

您可以使用以下案例:

UPDATE example_table
   SET variable1 = CASE id
                     WHEN 1 THEN 12
                     WHEN 2 THEN 42
                     WHEN 3 THEN 32
                     WHEN 4 THEN 51
                   END
 WHERE id BETWEEN 1 AND 4

答案 1 :(得分:2)

不适用于您的示例,但您可能会觉得这很有用:

UPDATE table
SET value = <value>
WHERE field = <specific value>

这样,您可以根据同一个表中的另一个字段更新表中的一个字段。将更新所有适用的行。引用我今天早些时候在工作中使用的一个例子

UPDATE porderitems
SET currency = -2
WHERE ord = 40396

此查询更新porderitems表(采购订单行),为连接到采购订单40396的所有行设置货币为-2。查询既不知道也不关心该采购订单中有多少行;所有这些都将更新。

答案 2 :(得分:0)

如果您的值来自另一个表:

UPDATE example_table
JOIN values_table ON values_table.id = example_table.id
SET example_table.variable1 = values_table.value

答案 3 :(得分:0)

UPDATE personal_details SET country_id = 6,其中id在26到40之间。我认为如果新值相同并且需要多行更新,则此代码将起作用。