从 mysql 数据库中的相同 table 打印父层次结构

Print parent hierarchy from same table in mysql database

我有一个 table 类别,它在 MYSQL 数据库中具有如下所示的字段和值。

id  name   parent    sort_order
1   Men    null       0
2   Women  null       1
3   shirt   1         0
4   salwar  2          1

这里parent是指向同一个table的外键。在我的类别列表页面中,我想打印父层次结构(如果有)以及类别名称。我可以在单个查询中执行此操作吗? 我已尝试在 mysql 中使用 group_concat,但无法生成所需的结果。

Expected Result:

1   men
2.  women
3.  men>shirt
4.  women> salwar

您可以使用自连接:

SELECT *
FROM
(
    SELECT name, 1 AS rank, sort_order
    FROM category
    WHERE parent IS NULL
    UNION ALL
    SELECT CONCAT(c1.name,
        CASE WHEN c2.parent IS NOT NULL THEN CONCAT('>', c2.name) ELSE '' END), 0 AS rank, c1.sort_order
    FROM category c1 LEFT JOIN category c2
        ON c1.id = c2.parent
    WHERE c1.parent IS NULL
) t
ORDER BY t.rank DESC, t.sort_order

SQLFiddle