【发布时间】:2020-07-08 21:11:01
【问题描述】:
这里是记录,我们希望在 #3 和 #4 之间移动 id #1
id title sort
1 a 1
2 b 2
3 c 3
4 d 4
5 e 5
6 f 6
方法一:
获取#3 排序号并对其加 1,并用它更新#1 排序,这样我们就有了
id title sort
1 a 4
2 b 2
3 c 3
4 d 4
5 e 5
6 f 6
然后加上 1 到 #4 排序以及之后的任何记录
我们有
id title sort
1 a 4
2 b 2
3 c 3
4 d 5
5 e 6
6 f 7
排序后
id title sort
2 b 2
3 c 3
1 a 4
4 d 5
6 e 6
6 f 7
它工作正常,但假设我们有 2,000,000 条记录,并且所有记录都必须更新......
方法二
得到 #3 和 #4 的总和排序并除以 2 => (3+4)/2=3.5 并将其用于#1 排序
id title sort
2 b 2
3 c 3
1 a 3.5
4 d 4
5 e 5
6 f 6
它也可以正常工作,但想象一下这种操作的数千次会产生像 3.99999999999 这样的大浮点数,过了一会儿它就很可怕
是否有任何 mysql/mariadb 技巧或方法可以做到这一点?
【问题讨论】:
-
您可以使用浮点数,然后定期进入表格并规范化值。
-
@GordonLinoff 规范化大数据,让 mysql 宕机……
-
请描述此类操作的必要性。可能有一种完全不同的方法效果更好。
-
@RickJames 这是用于购物网络应用程序的后端部分,在前视图中,用户可以通过拖放(角度)对产品进行排序,并且在用户放下每个产品后必须保存订单,这是漏洞前后项目 -> github.com/shopiddev