想要一个数据结果如下一个表想按照父子级关系显示出来mysql怎么写?部门1-部门1子部门1-部门1子部门2---部门1子部门2子部门1部门2-部门2子部门1
在MySQL中,可以使用递归查询(Recursive Query)来实现按照父子级关系显示数据。递归查询使用的是WITH RECURSIVE语句。
首先,你需要有一个包含父子关系的表,例如有一个名为“departments”的表,包含以下字段:id(部门ID)、name(部门名称)、parent_id(父部门ID)。其中,根部门的parent_id为NULL。
下面是一个示例的MySQL查询语句,可以按照父子级关系显示部门数据:
WITH RECURSIVE cte (id, name, parent_id, level) AS (
SELECT id, name, parent_id, 0
FROM departments
WHERE parent_id IS NULL
UNION ALL
SELECT d.id, d.name, d.parent_id, cte.level + 1
FROM departments d
INNER JOIN cte ON d.parent_id = cte.id
)
SELECT CONCAT(REPEAT('-', cte.level), cte.name) AS department
FROM cte
ORDER BY id;
在上述查询语句中,使用了一个递归公共表表达式(CTE)“cte”,它在初始查询中选择了根部门(parent_id IS NULL),然后通过递归查询将其子部门连接起来。
最后,通过将每一级部门名称前面添加适当数量的“-”来创建父子级关系的效果,并按照部门ID排序显示结果。
请根据你的具体表结构和字段名称进行相应的调整
原文地址: http://www.cveoy.top/t/topic/imKO 著作权归作者所有。请勿转载和采集!