是否可以使用一个sql查询遍历分层表直到NULL

mwg9r5ms  于 2022-10-22  发布在  Mysql
关注(0)|答案(2)|浏览(95)

例如,我的表如下所示:

| ID (This is primary key) | parent (this refers to other rows in this table) |
|--------------------------|--------------------------------------------------|
| 1                        | NULL                                             |
| 2                        | 3                                                |
| 3                        | 1                                                |

有没有可能有一个mysql查询,它会返回所有父级的层次结构,直到它达到NULL?
例如,如果我要第2行的父母,我想得到第2行,然后是第3行和第1行。
(顺便说一句,我希望我的表有多个父级为NULL的行)。
这是可能的吗,如果是,怎么做?

6jygbczu

6jygbczu1#

MySQL 8.0 recursive queries之前,你不能轻易做到这一点。
我在2017年4月的Percona Live会议上做了一个演示,展示了如何做到这一点。
您还可以看到:

  • 我以前的演示文稿
  • 我的答案是什么是将平面表解析为树的最有效/最优雅的方法?
  • 我的书
klsxnrf1

klsxnrf12#

使用您选择的表示树的结构,无法从mysql中的单个查询中获取层次结构。您可以切换到oracle(在google中搜索“oracle connect by”),或者使用不同的数据结构(邻接列表),或者运行不确定数量的查询。

相关问题