我正在做一个简单的递归查询来输出树层次结构。工作规范
WITH RECURSIVE r AS (
SELECT
p.id,
p.parent_id,
p.code,
p.name as title
FROM portal.orgunits p
WHERE name Like 'Bergnaum - Hand'
UNION
SELECT
ou.id,
ou.parent_id,
ou.code,
ou.name
FROM portal.orgunits ou
INNER JOIN r ON ou.id = r.parent_id
)
SELECT * FROM r
结果:
如您所见,我得到了按名称搜索的层次结构的结果。第一行是我正在寻找的内容,以下几行按嵌套顺序排列。
现在我需要将层次结构从顶部节点连接到最后一个节点,实际上得到以下结果:Ledner - Witting/Kunde - Spencer/Bergnaum - Hand
我试着这样做:
WITH RECURSIVE r AS (
SELECT
p.id,
p.parent_id,
p.code,
p.name as title,
concat_ws('/', p.name) as pathUrl
FROM portal.orgunits p
WHERE name Like 'Bergnaum - Hand'
UNION
SELECT
ou.id,
ou.parent_id,
ou.code,
ou.name,
concat_ws('/', ou.name, r.title) as pathUrl
FROM portal.orgunits ou
INNER JOIN r ON ou.id = r.parent_id
)
SELECT pathUrl FROM r
看起来方向是正确的,但我得到的结果是这样的。不完全是你需要的
如您所见,仅在上一级发生混合。但是如上所述,您通常只需要在 pathUrl 字段中获取一个字符串。如何写这样的请求?



在 CTE 的迭代部分,替换
在