用x=x+更新mysql中的20行;1价值观?

用x=x+更新mysql中的20行;1价值观?,mysql,optimization,sorting,Mysql,Optimization,Sorting,在mysql中,我有一个大约20行的表(示例)。我想将排序顺序(它是在带有picID的数组中)写入排序列,从1到x(x是本例中的项数x=20) 我的数组以:[10,15,1…]开头 我可以做到: UPDATE table SET sort=1 WHERE picID=10 UPDATE table SET sort=2 WHERE picID=15 UPDATE table SET sort=3 WHERE picID=1 直到20 但这会对mysql表进行20次更新 有没有可能用更有效的方

在mysql中,我有一个大约20行的表(示例)。我想将排序顺序(它是在带有picID的数组中)写入排序列,从1到x(x是本例中的项数x=20)

我的数组以:[10,15,1…]开头

我可以做到:

UPDATE table SET sort=1 WHERE picID=10
UPDATE table SET sort=2 WHERE picID=15
UPDATE table SET sort=3 WHERE picID=1

直到20

但这会对mysql表进行20次更新

有没有可能用更有效的方法


Jerry处理此问题的一种方法是使用临时表:

CREATE TABLE tmp_sort (id INT, sort_order INT);
INSERT INTO tmp_sort VALUES (10, 1), (15, 2), (1,3);

UPDATE table, tmp_sort 
   SET table.sort = tmp_sort.sort_order 
 WHERE tmp_sort.id = table.picID;
使用控制流的另一种方法:

UPDATE table 
   SET sort = CASE picID
  WHEN 10 THEN 1
  WHEN 15 THEN 2
  WHEN 1  THEN 3
  ELSE sort END

注意末尾的
ELSE
。如果你没有在那里,它会设置所有其他的空白

不太可能,因为必须更新指定picID的每一行。您必须发出20个更新命令。如果您不想发出大型SQL命令,这似乎是处理此情况的最有效方法

塔克斯!一种或另一种解决方案是否比20次更新速度更快?由于每次用户排序图片排序都会更新,而且有些相册有100多张图片(100次更新),我担心性能会受到影响。@Jerry这是一个输入错误,我修正了我的答案。我不知道演出会怎么样;你得自己测试一下。谢谢你,我会试试。。。每隔几秒钟可以进行100次更新;-)