gpt4 book ai didi

mysql - 更改mysql数据库中项目顺序的最有效方法

转载 作者:可可西里 更新时间:2023-11-01 07:48:19 24 4
gpt4 key购买 nike

我将从我的排序脚本返回值,它提供了元素在变化开始和结束时的位置。因此,假设第 4 位变为第 1 位。知道我只需要在原来的第 1、2、3 个位置上加 1 就可以保持顺序。

现在,更新数据库的最佳方式是什么?是否为每个需要更改的 ID 循环运行查询?那是 4 个更新查询,这似乎效率低下?还有别的办法吗?

最佳答案

无论是向上还是向下移动位置,您都可以使用单个查询更新表中行的位置值:

UPDATE tbl
SET pos = CASE WHEN pos = [oldpos] THEN
[newpos]
WHEN [newpos] < [oldpos] AND pos < [oldpos] THEN
pos + 1
WHEN [newpos] > [oldpos] AND pos > [oldpos] THEN
pos - 1
END
WHERE pos BETWEEN LEAST([newpos], [oldpos]) AND GREATEST([newpos], [oldpos])

pos 是您的位置字段。

只需将一行的当前位置作为 [oldpos] 并将该行的新位置传递给 [newpos] ,查询就会为您工作。

例。如果您要将一行从位置 3 更改为位置 10:

UPDATE tbl
SET pos = CASE WHEN pos = 3 THEN
10
WHEN 10 < 3 AND pos < 3 THEN
pos + 1
WHEN 10 > 3 AND pos > 3 THEN
pos - 1
END
WHERE pos BETWEEN LEAST(3, 10) AND GREATEST(3, 10)

关于mysql - 更改mysql数据库中项目顺序的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12164842/

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