pgslq 实现 sys_connect_by_path
时间: 2023-12-08 20:05:26 浏览: 127
oracle sys_connect_by_path 函数 结果集连接
在 PostgreSQL 中,可以使用递归查询和字符串聚合函数来模拟 Oracle 的 sys_connect_by_path 函数。下面是一个示例查询,可以实现类似 sys_connect_by_path 的功能:
WITH RECURSIVE t AS (
SELECT id, parent_id, name, CAST(name AS TEXT) AS path
FROM my_table
WHERE parent_id IS NULL
UNION ALL
SELECT t.id, t.parent_id, t.name, CAST(p.path || '/' || t.name AS TEXT)
FROM my_table t
JOIN t p ON t.parent_id = p.id
)
SELECT id, parent_id, name, path FROM t;
在这个查询中,使用了 WITH RECURSIVE 关键字来进行递归查询。首先查询出所有 parent_id 为 NULL 的记录,然后使用 UNION ALL 将它们与它们的子节点合并在一起。在每个递归步骤中,使用字符串聚合函数将父节点的路径和当前节点的名称拼接在一起。最终返回所有节点的 id、parent_id、name 和路径信息。
阅读全文