这个递归的CTE将在表中的每个级别形成一个URL,用一个
/
(尽管这很容易改变)。所需的最终节点在CTE中指定(在本例中,它是
7
):
WITH RECURSIVE urls AS (
SELECT url, parent
FROM cat
WHERE id = 7
UNION ALL
SELECT CONCAT_WS('/', cat.url, urls.url), cat.parent
FROM urls
JOIN cat ON cat.id = urls.parent
)
SELECT CONCAT('http://', url) AS url
FROM urls
WHERE parent IS NULL
Demo on dbfiddle
通过省略
WHERE id =
url
http://home
http://home/apps
http://home/user
http://home/apps/excel
http://home/apps/word
http://home/user/nick
http://home/user/nick/docs
Demo on dbfiddle