2012-02-19 47 views
4

什么是适当的更新在MySQL中同时更新多行?更新MySQL中的1列中的多个行

我只更新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; 

这似乎是它可能是低效的,或者如果它是最有效的查询让我知道:)

回答

10

您可以使用情况如下图所示:

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

+1:我的回答正好,请原谅我的格式:) – 2012-02-19 04:45:00

+0

这是实际的SQL代码吗? 'case'和'id'是什么?大小写是否指我想要输入的值(例如,第一行是12),id是指它的id(例如,第一行是1) – 2012-02-19 04:45:13

+2

@DonnyP:是的,这是有效的SQL - 检查[CASE文档]( http://dev.mysql.com/doc/refman/5.0/en/case-statement.html) – 2012-02-19 04:46:24

0

如果您的值从另一个表:

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

不适用于你的榜样,但你可能会发现这个有用:

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

这样你可以在一个表中的另一场在同一个表的基础上更新一个字段。所有适用的行将被更新。引用我在工作中使用的例子在今天上午早些时候

UPDATE porderitems 
SET currency = -2 
WHERE ord = 40396 

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