gpt4 book ai didi

Mysql邻接列表在父级之后对子级进行排序

转载 作者:行者123 更新时间:2023-11-29 13:26:33 24 4
gpt4 key购买 nike

我的菜单结构有一个经典的邻接列表。我使用递归将它们显示为无序列表。但是,在我的管理区域中,我希望它们只是一个接一个地显示(在 HTML 表格结构中)。为此,我只需要在 MYSQL 上选择即可让它们按正确的顺序排列。

Parent 1
Child of parent 1
Child of parent 1
Parent 2
Child of parent 2
...

现在我不知道该怎么做。我的表包含“ID”、“Parent_id”、“Name”、“Ordering”(每个父子项的排序列设置为从 1 到 X)。示例:

id | Parent_id |    name     | ordering
---+-----------+-------------+---------
1 | 0 | Lorem | 1
2 | 0 | Ipsum | 2
3 | 1 | Dolor | 2
4 | 0 | Amet | 3
5 | 1 | Pract | 1
6 | 2 | Maloc | 1

应该给出:

1  | 0         | Lorem       | 1
5 | 1 | Pract | 1
3 | 1 | Dolor | 2
2 | 0 | Ipsum | 2
6 | 2 | Maloc | 1
4 | 0 | Amet | 3

感谢您的建议

PS:我不想使用嵌套模型,因为我可以在菜单上进行大量更新,并且不想破坏它。

最佳答案

正如“a_horse_with_no_name”所说,这是不可能的,因为MySQL不支持递归。所以我通过 PHP 和递归完成了它。

这个想法是进行一个简单的递归并尝试从当前元素中查找子元素。如果有的话,对其执行 $tree = array_merge($tree, $childs) 并继续递归。

关于Mysql邻接列表在父级之后对子级进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20051123/

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