在 mysql 中,我有一个大约有 20 行的表(示例)。我想将排序顺序(它在携带 picID 的数组中)从 1 到 x(x 是本例中的项目数 x=20)写入 SORT 列。
我的数组开始于:[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 次更新...
有没有可能以更有效的方式做到这一点?
杰瑞
最佳答案
处理这个问题的一种方法是使用临时表:
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
。如果你没有它,它会将其他所有内容设置为空白!
关于mysql - 使用 x=x+1 值更新 mysql 中的 20 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3514401/