在 PostgreSQL 中,可以使用递归公共表表达式(Recursive Common Table Expressions,简称 CTE)来实现层次递归
WITH RECURSIVE hierarchy AS (
-- 基本查询
SELECT id, parent_id, name
FROM categories
WHERE parent_id IS NULL
UNION ALL
-- 递归查询
SELECT c.id, c.parent_id, c.name
FROM categories c
JOIN hierarchy h ON c.parent_id = h.id
)
SELECT * FROM hierarchy;
这个查询首先从 categories
表中选择所有没有父类别(即顶级类别)的记录。然后,通过递归地将子类别与已获取的类别进行连接,直到获取所有类别。最后,查询返回包含所有类别及其层次结构的结果集。
注意:在实际应用中,请根据您的数据表结构和需求调整此示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。