同时更新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;
这似乎效率低下,或者如果它是最有效的查询,请告诉我:)
答案 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之间。我认为如果新值相同并且需要多行更新,则此代码将起作用。