有个postgresql自关联表存储父类子类数据,怎么获取从顶级父类到某个指定子类的路径数据
时间: 2024-04-08 19:28:33 浏览: 58
你可以使用递归查询来获取从顶级父类到指定子类的路径数据。以下是一个示例查询:
```sql
WITH RECURSIVE category_path AS (
-- 选择指定子类
SELECT id, name, parent_id
FROM categories
WHERE id = <指定子类ID>
UNION ALL
-- 递归查询父类
SELECT c.id, c.name, c.parent_id
FROM categories c
JOIN category_path cp ON c.id = cp.parent_id
)
-- 最终查询路径数据
SELECT id, name
FROM category_path
ORDER BY id;
```
在这个查询中,我们使用了一个递归的公共表表达式(RECURSIVE CTE)来获取从指定子类到顶级父类的路径数据。首先,我们选择指定子类作为起始点,然后逐级向上查询父类,直到到达顶级父类。最后,我们按照路径中的ID排序,得到完整的路径数据。
请将`categories`替换为你实际使用的表名,`<指定子类ID>`替换为你要查询的子类的ID。执行以上查询语句,你将会得到从顶级父类到指定子类的路径数据。
阅读全文