【发布时间】:2017-05-25 21:45:26
【问题描述】:
我正在考虑对关系数据库表中的行进行简单的重新排序。 我想避免这里描述的方法: How can I reorder rows in sql database
我的简单想法是使用双精度 64 位 IEEE 754 浮点类型的 ListOrder 列。 在两个现有行之间插入一行时,我们计算 listOrder 值作为这些兄弟元素的平均值。
示例:
1。起始状态:
value, listOrder
a 1
b 2
c 3
d 4
e 5
f 6
2。将“e”向上移动两行
e-row 上的一个简单 sql 更新:update mytable set listorder=2.5 where value='e'
value, listOrder
a 1
b 2
e 2.5
c 3
d 4
f 6
3。将“a”向下移动一个位置
value, listOrder
b 2
a 2.25
e 2.5
c 3
d 4
f 6
我有一个问题。我可以执行多少次插入(在边缘情况下)以获得正确排序的列表。
对于 64 位整数,在同一位置插入少于 64 次。
浮点类型是否允许更多的插入?
所描述的方法还有其他问题吗? 您是否看到任何补丁/调整以使这个想法在应用程序中安全且可用?
【问题讨论】:
标签: sql algorithm math numeric