如何让MySQL选择树结构?

时间:2012-10-10 18:44:13

标签: mysql sql

我在MySQL中有一个表:

id       name        parent_id
1        animals       null
2        mammal         1
3        feline         2
4        human          2
5        cat            3
6        invertebrate   1
7        snake          6
8        objects        null
etc..

我想要一个MySQL查询,按此顺序显示结果:

    Animals
       Mammal
          Feline
             Cat
          Human
       Invertebrate
    Objects
etc..

我还在学习,完全被这个人困住了。

2 个答案:

答案 0 :(得分:2)

如果要显示具有无限数量嵌套级别的树结构,我认为您需要在其他语言中使用mysql。使用mysql和PHP,可以使用几个嵌套的“while”和“if”循环来完成。但正如Iouri所说,“纯粹”的Mysql方法,例如将表连接回自身,只会支持与您拥有的连接数一样多的嵌套级别。

SELECT 
    t1.name, t2.name, t3.name
FROM table t1
    JOIN table t2 ON t2.parent_id = t1.id
    JOIN table t3 ON t3.parent_id = t2.id
    # etc.

答案 1 :(得分:1)

这可能会有所帮助:

http://sqllessons.com/categories.html

我认为它假设您有一定数量的嵌套级别。