是否有任何單個等同於這些的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;
是否有任何單個等同於這些的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;
是的,這樣的:
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)
;
,但我不知道這是否就是你有什麼想法?
謝謝,關於多個字段(請參閱編輯的問題),我們可以包裝CASE塊內的字段,還是需要爲每個字段編寫不同的CASE塊?我的查詢將更新5個字段。再次感謝。 –
OP也想更新b,你需要第二個'CASE'。 –
您需要爲您的5個字段添加5個「CASE」語句。 –
如果您要插入更大的數據陣列,那麼您可以使用ON DUPLICATE KEY UPDATE
構造。它將在MySQL中更高效地工作。
查看my answer here對於類似的問題,例如使用情況。
不知道我的知識 – hafichuk
執行三個單獨的語句有什麼問題?除非你看到服務器的延遲特別高,否則這不應該成爲問題。 –