2012-02-19 57 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