我有一个表类别,其字段和值如下所示在MYSQL数据库中。
id name parent sort_order
1 Men null 0
2 Women null 1
3 shirt 1 0
4 salwar 2 1
这里parent是指向同一个表的外键。在我的类别列表页面中,我想打印父层次结构(如果有)以及类别名称。我可以在一个查询中执行此操作。
我在mysql中尝试使用group_concat
但无法生成所需的结果。
Expected Result:
1 men
2. women
3. men>shirt
4. women> salwar
答案 0 :(得分:1)
您可以使用自我加入:
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