现有一需求,需要由用户自由调整所选择记录显示的位置,类似于DataGridView中编辑列时,调整列的顺序。
我第一想法就是:增加一顺序字段[order_num] int;
假设E移动到A前面,则修改E的[order_num]为A的[order_num],然后把从A-E中间的所有记录依次[order_num]+1.查询记录时按[order_num]排序,可以达到目的吧!
同事提出一更简单的想法!增加一顺序字段[order_num] numeric(18,4); 如果E移动到A的前面,则直接修改E的[order_num]=A的[order_num]-0.0001;其它全不变。
查询时同样按[order_num]排序,也可以达到目的,而且仅修改一次。。。虽然这个方法如果移动次数大于1000次后顺序就不对了,但是不可能针对同一条记录修改1000次吧。