gpt4 book ai didi

MySQL 多更新保持 IN 子句的顺序

转载 作者:行者123 更新时间:2023-11-29 02:23:39 24 4
gpt4 key购买 nike

我想以这种方式更新 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 中的 PRIMARY KEY 索引来执行更新,我得到:

id, item_order
1, 1
2, 3
8, 3
10, 4

我想知道你们是否知道任何解决方法来面对这个问题并让 MySQL 在一次更新中使用索引。我碰巧只是通过在 PHP bucle 中执行大量更新来做到这一点。想法?

谢谢!

最佳答案

尝试这样排序。

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);

关于MySQL 多更新保持 IN 子句的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27171261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com