猿问

从MySQL中的分层数据生成基于深度的树(无CTE)

从MySQL中的分层数据生成基于深度的树(无CTE)

嗨,很多天了,我一直在用MySQL来解决这个问题,但是我想不出来。你们有什么建议吗?

基本上,我有一个类别表,其域如下:idname(类别名称)parent(类别的父类的ID)。

示例数据:

1  Fruit        02  Apple        13  pear         14  FujiApple    25  AusApple     26  SydneyAPPLE  5....

有许多层次,可能超过3个层次。我想要创建一个SQL查询,该查询根据层次结构对数据进行分组:父级>子级>外孙>等等。

它应该输出树结构,如下所示:

1 Fruit 0
 ^ 2 Apple 1
   ^ 4 FujiApple 2
   - 5 AusApple 2
     ^ 6 SydneyApple 5
 - 3 pear 1

我可以使用一个SQL查询来完成这个任务吗?我尝试过并确实发挥了作用的另一种选择是:

SELECT * FROM category WHERE parent=0

在此之后,我再次循环数据,并选择Parent=id所在的行。这似乎是个糟糕的解决方案。因为它是MySQL,所以不能使用CTE。


婷婷同学_
浏览 440回答 3
3回答

泛舟湖上清波郎朗

在RDBMS中存储分层数据有两种常见的方法:邻接列表(您正在使用的)和嵌套集。关于这些替代方案,有一篇很好的文章。管理MySQL中的分层数据..您只能在使用嵌套集模型的单个查询中执行所需的操作。然而,嵌套的集合模型使更新层次结构的工作更多,因此您需要根据您的操作需求考虑权衡。
随时随地看视频慕课网APP

相关分类

MySQL
我要回答