将订单分配给 mysql 表行的最佳方法是什么?如果我有第 1 行到第 5 行并且我想删除第 4 行,我怎样才能使 5 成为新的 4?如果我将 make 3 设为新的 1,我需要将 1 添加到其他每一行。可能有 1 行或 2 行或一百行。
有没有比手动对每个意外事件进行编程更简单的方法?
提前致谢。
补充: 我有一个界面,我可以在其中添加包供客户查看。它们自动按 id 升序排列。我可以按价格、包裹名称或其他任何方式重新订购它们,但我不时想根据自己的喜好任意订购它们。
再次感谢。
最佳答案
假设您的数据库中有一个唯一的 order_column
列:
在位置 x 添加新行:
- 锁定表格
- 更新位置 >= x 的所有行并加 1
- 然后在位置x插入新行
- 解锁表格
交换位置 x 和 y:
UPDATE table SET x=(@temp:=x), x = y, y = @temp;
删除位置 x 处的一行:
- 锁定表格
- 删除位置x的行
- 更新位置 > x 并减去 1 的所有行
- 解锁表格
显示数据:
只需 ORDER BY
按 order_column
列。
关于mysql - 用户使用 php mysql 确定排序或排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12831411/