我想以这种方式更新MySQL表中预先计算的项目顺序。
SET @order_item := 1;
UPDATE item
SET item_order := (@order_item := @order_item + 1)
WHERE
id IN (8,2,1,10);
我的预期结果是:
id, item_order
8, 1
2, 2
1, 3
10, 4
但是,当MySQL在id中使用主键索引执行更新时,我得到:
id, item_order
1, 1
2, 3
8, 3
10, 4
我想知道你们是否知道有什么办法可以解决这个问题,让MySQL在一个更新中使用索引。我只是通过在PHP桶中执行很多更新来实现它。想法?
谢谢!
发布于 2014-11-27 13:10:22
试着点这样的菜。
SET @order_item := 1;
UPDATE item
SET item_order := (@order_item := @order_item + 1)
WHERE
id IN (8,2,1,10)
order by FIELD(id,8,2,1,10);
发布于 2014-11-27 13:03:22
可以将ORDER BY
子句附加到UPDATE
查询中,以告诉MySQL您希望它处理行的顺序。当然,您需要能够使用相同的SELECT
子句按期望的顺序排列行。
但我想这就是你想要达到的目标:
https://stackoverflow.com/questions/27171261
复制相似问题