2014-06-30 77 views
0

我有一個數組:一次更新多行?

[{id:1, sort:0}, {id:2, sort:1}] 

這可以潛在地是許多ID /排序對。

什麼是最好的方式來解決MySQL中的排序列的更新?我寧願不一次更新每個ID,有什麼我可以使用的?

+0

這樣的事'UPDATE yourTableName集進行排序= WHERE '? – DrCopyPaste

+0

http://stackoverflow.com/questions/2579340/update-multiple-rows-with-known-keys-without-inserting-new-rows-if-nonexistent-k/2580987#2580987 – newtover

回答

1

假設ID是唯一的關鍵,我會用插入做的工作

INSERT INTO sometable(id, sort) 
VALUES 
(1,0), 
(2,1), 
...... 
ON DUPLICATE KEY UPDATE sort=VALUES(sort) 
+0

但我更新後更新? – panthro

+0

如果記錄已經存在,這將進行更新。它試圖做一個插入,但是id是一個唯一鍵,它將會失敗,並觸發ON DUPLICATE KEY子句將排序列的值更新爲您嘗試插入到排序列中的值。意味着您可以使用單個SQL語句更新數千行。問題出現在id不存在的情況下(在這種情況下,它實際上會嘗試插入一條記錄,並且如果未指定的列被定義爲非null,那麼它將失敗) – Kickstart