如何重新排序MySQL表中的记录/行

时间:2015-04-22 09:49:21

标签: mysql sql

我有一个表,它有三列:IDNameParentID。让我们考虑一下这个结构:

ID |   Name   | ParentID
 1     Root       NULL
 2   Parent #1     1
 3   Parent #1     1
 4   Parent #1     1
 5   Parent #1     1
 6   Child  #1     2
 7   Child  #1     2
 8   Child  #1     3
 9   Child  #1     4
 10  Child  #1     5
 11  Child  #1     5

在用户重新排序行之后,客户端的JavaScript将按照其ID发送一个包含行的新顺序的数组。例如,它可以是[4, 10, 2, 3, 11, 1]

我应该使用哪些查询/查询,以便我可以更改MySQL表中行的顺序?我想得到这样的东西:

ID |   Name   | ParentID
 1     Root       NULL
 9   Child  #1     4
 5   Parent #1     1
 4   Parent #1     1
 3   Parent #1     1
 6   Child  #1     2
 7   Child  #1     2
 8   Child  #1     3
 2   Parent #1     1
 10  Child  #1     5
 11  Child  #1     5

2 个答案:

答案 0 :(得分:2)

在我看来,如果没有额外的专栏order

,你就无法做到这一点

为此,您必须创建一个新列order

然后在传递数组时更新表。

foreach($passed_array as $order => $val){
 $q = "Update table SET  `order` = $order WHERE ID = $val";
 // run query here
}

修改

在前端显示数据时,选择查询就像

"SELECT * FROM table `Order` BY `order` ASC"

答案 1 :(得分:0)

我认为您应该创建新的数据库列(例如weight,INTEGER类型),它将指定您的行顺序。它应该是最理想的解决方案。