答案 0 :(得分:0)
与更重的数据库系统不同,MySQL不支持像递归CTE /查询这样的任何东西。但是我们可以通过执行一定数量的自连接来模拟递归查询:
SELECT
CASE WHEN t3.slug IS NOT NULL
THEN CONCAT(t3.slug, '/', t2.slug, '/', t1.slug)
WHEN t2.slug IS NOT NULL
THEN CONCAT(t2.slug, '/', t1.slug)
ELSE t1.slug END AS slug
FROM yourTable t1
LEFT JOIN yourTable t2
ON t1.term_id = t2.id
LEFT JOIN yourTable t3
ON t2.term_id = t3.id
WHERE t1.id = 4;
<强>输出:强>
slug
1 category-2/category-2-1
在这里演示:
在演示中,您可以删除WHERE
条件,以查看是否为表中的每个条目形成了正确的路径。如有必要,扩展此查询以在层次结构中更深入也很容易。