关于文章列表 自定义排序问题

在文章列表中 有10000条数据 按orderid 1 2 3 4 5.. 正序排列
改变当前操作的数据 其他数据的orderid 不变

后台操作 用户不知道所有数据的orderid

只知道能把任意数据选择放到 任意位置(通常是1 2 3 4 5 这几个位置 手动输入数字)

第一次操作 我想把当前的第5条数据放在第2条显示
第二次操作 我想把当前的第4条数据放在第3条显示
如何确保放置的位置是正确的?

可随意修改数据库字段 类型 最好不要修改其他的数据

阅读 2.4k
1 个回答

新增一个id字段(创建数据时值和当前表的主键值相同)

在操作时,把操作的数据id变为放置的位置号,

把放置号到操作数据原位置号之间的所有id+1 或-1

筛选时按照这个id字段排序即可。

比如数据:

id   name   sort_id
1     aaa      1
2     bbb      2
3     ccc      3
4     ddd      4
5     eee      5

把第5条数据放在第二个显示, 2-4 这几个数据的 sort_id 都+1, 5的 sort_id 变为2

id   name   sort_id
1     aaa      1
2     bbb      3
3     ccc      4
4     ddd      5
5     eee      2

按照 sort_id 排序

推荐问题