1

将订单分配给 mysql 表行的最佳方法是什么?如果我有 1 到 5 行并且我想删除 4,我怎样才能使 5 成为新的 4?如果我将 3 设为新的 1,我需要将 1 添加到其他每一行。可能有 1 或 2 行或一百行。

有没有比手动编程每个意外事件更简单的方法?

提前致谢。

附加:我有一个界面,我可以在其中添加包供客户查看。它们按 id 升序自动排序。我可以按价格、包装名称或其他方式重新订购它们,但我想不时根据自己的喜好任意订购它们。

再次感谢。

4

3 回答 3

3

假设您的数据库中有一个唯一order_column列:

在位置 x 添加新行:

  • 锁定表
  • 更新 position >= x 的所有行并加 1
  • 然后在位置 x 插入新行
  • 解锁表

要交换位置 x 和 y:

  • UPDATE table SET x=(@temp:=x), x = y, y = @temp;

(来源)

要删除位置 x 处的行:

  • 锁定表
  • 删除位置 x 处的行
  • 更新所有位置 > x 的行并减去 1
  • 解锁表

显示数据:
ORDER BYorder_column列。

于 2012-10-11T03:00:47.463 回答
1

排序的基本方法通常相当于按字母或数字对特定列进行排序。或者,如果您需要的订单无法根据您拥有的数据创建,那么您需要专门添加一列以进行排序,然后创建一个界面来填充数据。听起来你需要稍后做。

于 2012-10-11T02:53:32.480 回答
0

除非我完全误解了这个问题:

不理会表格,仅用于在ing 行时ORDER BY确定排序。SELECT

于 2012-10-11T02:57:11.263 回答