我有一个表,它有三列:ID
,Name
和ParentID
。让我们考虑一下这个结构:
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
答案 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类型),它将指定您的行顺序。它应该是最理想的解决方案。