2011-11-21 69 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

執行三個單獨的語句有什麼問題?除非你看到服務器的延遲特別高,否則這不應該成爲問題。 –

回答

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,你需要第二個'CASE'。 –

+0

您需要爲您的5個字段添加5個「CASE」語句。 –