如何基于parent_id查询多级分类并输出为三级分类列格式?
假设你的分类表名为category,可通过三次自关联实现需求,兼容MySQL、PostgreSQL、SQL Server等绝大多数主流数据库:
SELECT c1.name AS category1, c2.name AS category2, c3.name AS category3 FROM category c1 LEFT JOIN category c2 ON c2.parent_id = c1.id_category LEFT JOIN category c3 ON c3.parent_id = c2.id_category WHERE c1.parent_id = 1
逻辑说明
- 先从
c1表过滤出所有一级分类:父id等于根节点root的id=1,自动排除root节点 - 用左连接关联二级分类表
c2,无对应二级分类时返回null - 再用左连接关联三级分类表
c3,无对应三级分类时返回null
如果你的根节点id不固定,可将WHERE条件调整为下面的写法,通过属性匹配根节点:
WHERE c1.parent_id = (SELECT id_category FROM category WHERE name = 'root' AND parent_id = id_category)
内容的提问来源于stack exchange,提问作者dodo
相关产品推荐
相关产品推荐

