如何在mysql中查询图形/层次结构数据

cam*_*mil 3 mysql database graph hierarchy relational-database

假设我有一个按层次结构构建的对象表:

A
|--B
|--C
|  +--D
+--E
Run Code Online (Sandbox Code Playgroud)

它们存储在“父子”表中:

parent  child
A       B
A       C
C       D
A       E
Run Code Online (Sandbox Code Playgroud)

我如何查询它以获得上面定义的结构?我想我需要一些能产生这样的信息的东西:

object  full_path
A       NULL
B       A
C       A
D       A.C
E       A
Run Code Online (Sandbox Code Playgroud)

我不知道如何处理嵌套超过一层的对象。感觉我可能需要迭代表(不知道这在 SQL 中是否可行),或者使用我以前从未遇到过的某种查询。

附加信息:

  1. A 不必是唯一的孤立对象。
  2. 孩子可能有多个父母,但现在我很高兴能找到更容易解决的情况的答案。GROUP BY我可以通过简单的and语句将多父结构转换为单父结构MIN

dev*_*ter 5

其他答案是正确的,mysql中没有递归功能。此链接描述了如何处理 mysql 中的层次结构:http://explainextended.com/2009/03/17/hierarchical-queries-in-mysql/

我找到了另外两个 SO 问题的链接:How to do MySQL Looped Join which tests if results are Complete? MySql 中的分层数据