最佳答案
与更重量级的数据库系统不同,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
此处演示:
Rextester
在演示中,您可以删除 WHERE
条件,以查看是否为表中的每个条目形成了正确的路径。如有必要,还可以轻松扩展此查询以深入层次结构。
关于mysql - mysql中的递归slug url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46217634/