gpt4 book ai didi

php - mySQL更新排序-删除一个或多个后从具有无限子项的表中排序

转载 作者:行者123 更新时间:2023-11-29 21:56:03 24 4
gpt4 key购买 nike

我有一个这样的表:

id | parent_id | order 
1 | 0 | 1
2 | 1 | 1
3 | 1 | 2
4 | 1 | 3
5 | 0 | 2
6 | 0 | 3
7 | 5 | 1
8 | 5 | 2

它通过parent_id在同一个表中获取无限的类别和子项。我有一个带有用于删除一行或多行的复选框的表单,并且我想在删除一行或多行后重新排序按parent_id分组

我写了这段代码:

mysql_query("SET @rownumber = 0;");
$sql_previous_order = "UPDATE `cms` SET `order` = (@rownumber:=@rownumber+1) ORDER by parent_id, `order` ASC";

但在更改parent_id后它不会将行号变为零(0)。

最佳答案

您可以引入一个附加变量 - p_id。将其与parent_id进行比较,并在parent_id更改时将rownumber重置为0。像这样

 SET @rownumber = 0;
SET @p_id = 0;

select id,
CASE @p_id
WHEN parent_id THEN @rownumber:=@rownumber+1
ELSE @rownumber:=0 END as new_order,
@p_id:=parent_id as p_id
from cms
ORDER by parent_id ASC
;

关于php - mySQL更新排序-删除一个或多个后从具有无限子项的表中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33141167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com