开发者社区> 问答> 正文

使用MySQL查询遍历行以创建递归树

我有一个像这样设置的物料清单表: item-parent

显示物料清单的最终结果是这样显示的:

item 1 - parent 0
item 2 - parent 1
item 3 - parent 1
最终结果也可能是多级的,如下所示:

item 3 - parent 0
item 4 - parent 3
item 76 - parent 3
它可以无限进行:

item 76 - parent 0
item 46 - parent 76

item 46 - parent 0
item 25 - parent 46 现在,我要么只是从数据库中获得1级:

SELECT * FROM bom WHERE parentId = $itemId (shorthand)

或从表中拉出每一行,并使用递归函数仅对所需行进行排序,但这显然效率不高,因为我可能只需要10行,但我拉出10,000条记录。递归函数的输出将只创建一个像这样的树:

item 1 item 2 item 3 item 4 item 76 item 46 item 25 我所知道的是,我从项目1开始。项目5的父级可以为11;项目5的父级为11。他们不必顺序进行。我想把所有的子树枝都放在树上。我如何在mysql中执行此查询?

展开
收起
保持可爱mmm 2020-05-11 11:24:09 641 0
1 条回答
写回答
取消 提交回答
  • 如今的MySQL(8)支持递归查询。

    考虑到您的表项(id,父级)和id = 1的起始项,以下将完成工作:

    with recursive result(id, parent) as (select id, parent from item where id = 1 union all select i.id, i.parent from item i join result on i.parent = result.id) select * from result; 分享来源:stack overflow

    2020-05-11 11:24:22
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像