SQL表中基于用户的行顺序



用户应该能够以类似excel的方式更改行顺序。现在行是按id排序的。所以我再加一列order

1) Row A
2) Row B
3) Row C
4) Row D

现在Row A应该在Row B之后。

2) Row B
X) Row A
3) Row C
4) Row D

我需要计算新的订单。因此,我需要更新所有行!我不喜欢那样。

<<p> 想法/strong>

我可以使用10而不是1的十进制间隔。

10.00) Row A
20.00) Row B
30.00) Row C
40.00) Row D

然后我可以像这样计算新的顺序:neworder = before + (after - before) / 2

Row BRow A

20.00) Row B
25.00) Row A
30.00) Row C
40.00) Row D

Row BRow C

20.00) Row B
22.50) Row C
25.00) Row A
40.00) Row D

Row CRow D

20.00) Row B
22.50) Row C
23.75) Row D
25.00) Row A

有更好的方法来处理这种问题吗?

编辑 @Adam建议单链线性列表。它会起作用的。但是排序和性能呢?

如果您将'order'列更改为'上一列'记录,则每次重新排序只需要两行编辑。使用您的最后一个示例:(我给第一行'NULL'的令牌值。)

B行之后的A行

NULL) Row B
B) Row A
A) Row C
C) Row D

…和B行之后的C行(将A行改为C行,C行改为B行)

NULL) Row B
B) Row C
C) Row A
A) Row D

…(将D行改为C行,将A行改为D行)

NULL) Row B
B) Row C
C) Row D
D) Row A

相关内容

  • 没有找到相关文章

最新更新