怎么用sql查出分类表下所有最下级分类以及显示它的父类名称
时间: 2023-11-12 19:03:55 浏览: 43
可以使用递归查询来实现查出分类表下所有最下级分类以及显示它的父类名称。具体的 SQL 语句如下:
WITH RECURSIVE cte AS (
SELECT id, name, parent_id, name AS full_name
FROM categories
WHERE NOT EXISTS (SELECT 1 FROM categories WHERE parent_id = categories.id)
UNION ALL
SELECT c.id, c.name, c.parent_id, CONCAT(cte.full_name, ' >> ', c.name)
FROM categories c
JOIN cte ON c.parent_id = cte.id
)
SELECT cte.id, cte.name, cte.full_name, p.name AS parent_name
FROM cte
JOIN categories p ON cte.parent_id = p.id;
其中,categories 表是分类表,包含 id、name、parent_id 三个字段,表示分类 ID、名称和父级分类 ID。该 SQL 语句使用了递归查询,并将查询结果存储在一个公共表达式(CTE)中。
在 CTE 中,首先查询出所有没有子分类的分类节点作为起始点,并将其作为最下级分类节点和父分类节点的起点。然后,通过联接操作和 CONCAT 函数逐级向上查询所有的父级分类名称,直到顶级分类。
最后,从 CTE 中选择最下级分类节点的 ID、名称、全名称和父分类名称,并联接分类表本身以查找其对应的父级分类节点的名称。