MySQL递归查询实现部门层级显示
在MySQL中,可以使用递归查询来实现按照级别显示部门的需求。假设有一个名为'department'的表,包含以下字段:
- id:部门ID
- name:部门名称
- level:部门级别
- parent_id:上级部门ID
以下是一个示例的MySQL查询语句,可以按照级别显示部门:
WITH RECURSIVE department_cte AS (
SELECT id, name, level, parent_id, name as path
FROM department
WHERE parent_id IS NULL
UNION ALL
SELECT d.id, d.name, d.level, d.parent_id, CONCAT(cte.path, ' - ', d.name)
FROM department AS d
INNER JOIN department_cte AS cte ON d.parent_id = cte.id
)
SELECT path
FROM department_cte
ORDER BY level, id;
这个查询使用了递归公共表表达式(CTE)来实现递归查询。首先,初始查询从根部门开始,然后递归地连接子部门,使用UNION ALL操作符将结果合并。在递归查询的过程中,使用CONCAT函数将部门名称连接为路径。最后,查询结果按照级别和ID排序。
请根据具体的表结构和数据进行适当的调整。
原文地址: https://www.cveoy.top/t/topic/p4Ig 著作权归作者所有。请勿转载和采集!