用x=x+更新mysql中的20行;1价值观?
在mysql中,我有一个大约20行的表(示例)。我想将排序顺序(它是在带有picID的数组中)写入排序列,从1到x(x是本例中的项数x=20) 我的数组以:[10,15,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次更新 有没有可能用更有效的方
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次更新;-)