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

は、あなたが何をするかです:

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

何かがあなたが何をしたいかのようになります。あなたはcategoriesという名前のテーブルを持っており、2列はここdisplay_ordertitleていると言う場合

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

のような... IDが」あなたは空白のままにすることができますが、あなたの答えは、複数行の更新を扱っていません、複数の列のみ。 –

2

私は再びケースが解決策だと思います。考え方は、各変数に別々の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 - この答えも同様に:) –

2

いくつかの「例:」「IDにこのサインオンを配置する必要がありませんおかげAleroot

UPDATE example_table 
SET variable1 = (CASE 
    WHEN id = 1 THEN 12 
関連する問題