gpt4 book ai didi

mysql - 从 mysql 数据库中的同一个表打印父层次结构

转载 作者:可可西里 更新时间:2023-11-01 08:39:43 26 4
gpt4 key购买 nike

我有一个表类别,它在 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

最佳答案

您可以使用自连接:

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

关于mysql - 从 mysql 数据库中的同一个表打印父层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38179244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com