MySQL按顺序获取父/子类别

时间:2013-12-04 18:58:10

标签: mysql multi-level

我的问题很简单,但我不知道它的答案......

我有一个包含以下字段和值的表:

分类

ID | PARENT_ID | NAME
---------------------
 1 |     0     | Cat1
 2 |     0     | Cat2
 3 |     1     | Cat3
 4 |     1     | Cat4
 5 |     3     | Cat5
 6 |     2     | Cat6
 7 |     0     | Cat7
.....

基本上,我只需要使用MySQL获取数据 - 按Parent_id排序。另外,对于每个名字,我需要根据级别添加“ - ”符号 最后它应该是这样的:

ID | PARENT_ID | NAME
---------------------
 1 |     0     | Cat1
 3 |     1     | -Cat3
 5 |     3     | --Cat5
 4 |     1     | -Cat4
 2 |     0     | Cat2
 6 |     2     | -Cat6
 7 |     0     | Cat7

我不知道如何开始构建这样的查询 - 我想按parent_id排序,但它不起作用。

是否有可用于实现此目的的功能或方法?任何提示都会非常感激。

2 个答案:

答案 0 :(得分:0)

- 不确定为什么,或者它可能意味着什么,但我认为这会做你所要求的:

select ID,PARENT_ID,concat(substring('---------------',1,NAME),NAME) as NAME
from table
order by PARENT_ID
  • 请注意,如果超过15个“级别”(或PARENT_ID> 15),则需要添加更多“ - ”。

答案 1 :(得分:0)

尝试使用REPEAT SQL函数。 你可以做到     通过parent_id从表顺序中选择联系人(REPEAT(' - ',parent_id),name);