2011-11-21 13 views
2

単一これらに相当するSQL文はありますか?異なるIDを持つMySQLバッチ更新ステートメント

UPDATE table_name SET (a = 'something', b='B1') WHERE id=1; 
UPDATE table_name SET (a = 'something else', b='B2') WHERE id=2; 
UPDATE table_name SET (a = 'another', b='B3') WHERE id=3; 
+0

私には分かりません – hafichuk

+0

3つの文を実行すると何が問題になりますか?あなたのサーバーに特に高い待ち時間が見られるのでなければ、これは問題ではありません。 –

答えて

5

はい、この:

UPDATE table_name 
    SET a = CASE WHEN id = 1 
       THEN 'something' 
       WHEN id = 2 
       THEN 'something else' 
       WHEN id = 3 
       THEN 'another' 
      END 
WHERE id IN (1,2,3) 
; 

が、私はそれはあなたが心の中に持っているものだかどうかわからないんだけど?

+0

おかげさまで、複数のフィールドについて(編集された質問を参照)、CASEブロック内のフィールドを折り返すことができますか、各フィールドごとに異なるCASEブロックを記述する必要はありますか?私のクエリは5つのフィールドを更新する予定です。再度、感謝します。 –

+0

OPはまたbを更新したいので、そのためには2番目の 'CASE'が必要です。 –

+0

5つのフィールドに5つの 'CASE'ステートメントが必要です。 –

1

挿入するデータの配列が大きい場合は、ON DUPLICATE KEY UPDATEの構造を使用できます。 MySQLでより効率的に動作します。

同様の質問については、使用例についてはmy answer hereを参照してください。

関連する問題