2014-06-30 54 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