2012-02-19 51 views
3

跟进至Update multiple rows in 1 column in MySQL更新MySQL中2列的多行

什么是用于更新2列中多行的最高效查询?

UPDATE example_table SET variable1 = 12 WHERE id=1; 
UPDATE example_table SET variable2 = 'blue' WHERE id=1; 

UPDATE example_table SET variable1 = 42 WHERE id=2; 
UPDATE example_table SET variable2 = 'red' WHERE id=2; 

UPDATE example_table SET variable1 = 32 WHERE id=3; 
UPDATE example_table SET variable2 = 'yellow' WHERE id=3; 

使用case似乎是最有效的,但我怎么会与被设置在同一时间多个值做呢?

回答

10

如果你有一个表,名为categories说两列display_ordertitle这里是你会做什么:

UPDATE categories 
SET display_order = CASE id 
    WHEN 1 THEN 32 
    WHEN 2 THEN 33 
    WHEN 3 THEN 34 
END, 
title = CASE id 
    WHEN 1 THEN 'New Title 1' 
    WHEN 2 THEN 'New Title 2' 
    WHEN 3 THEN 'New Title 3' 
END 
WHERE id IN (1,2,3) 
0

像这样的东西可能是你想要做什么:

UPDATE example_table SET variable1 = 42,variable2 = 'red' WHERE id=2; 
+0

感谢Aleroot,但你的回答不更新多行处理,只有多列。 – 2012-02-19 20:26:34

2

我再次考虑CASE是解决方案。这个想法是为每个变量使用单独的CASE语句。例如:

UPDATE `example_table` 
SET `variable1` = (CASE 
    WHEN `id` = 1 THEN 12 
    WHEN `id` = 2 THEN 42 
    WHEN `id` = 3 THEN 32 
    END), 
`variable2` = (CASE 
    WHEN `id` = 1 THEN 'blue' 
    WHEN `id` = 2 THEN 'red' 
    WHEN `id` = 3 THEN 'yellow' 
    END); 

希望它有帮助!

+0

谢谢Abhay - 这个答案也适用:) – 2012-02-19 20:26:59

2

有些不是需要把这个注册的ID“”如:“身份证”,你可以让它空白......像

UPDATE example_table 
SET variable1 = (CASE 
    WHEN id = 1 THEN 12