mysql - 用户使用 php mysql 确定排序或排序

标签 mysql sorting

将订单分配给 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;

(source)

删除位置 x 处的一行:

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

显示数据:
只需 ORDER BYorder_column 列。

关于mysql - 用户使用 php mysql 确定排序或排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12831411/

相关文章:

mysql - 使用spark远程mysql数据库访问错误

php - 我在数据库中有 2 个表,我只想打印一次重复值

MySQL SQL Union 给出奇怪的结果

algorithm - 有向无环图的拓扑排序

mysql - 解决创建 MYSQL View 的问题

mysql - 结果集中的列值不会被覆盖

c++ - 从整数 vector 列表中删除重复项的快速方法

java - 这种排序算法的时间复杂度是多少?

javascript - JQuery Datatables 对列内的选择进行排序

java - 输入已排序的文件,对其进行取消排序,然后输出未排序的文件(Java)