想要一个数据结果如下一个表想按照级别显示出来mysql怎么写?部门1-部门1子部门1-部门1子部门2部门2-部门2子部门1
在MySQL中,你可以使用递归查询来实现按照级别显示的需求。下面是一个示例的表结构和数据:
CREATE TABLE departments (
id INT PRIMARY KEY,
name VARCHAR(100),
parent_id INT
);
INSERT INTO departments (id, name, parent_id) VALUES
(1, '部门1', NULL),
(2, '部门1子部门1', 1),
(3, '部门1子部门2', 1),
(4, '部门2', NULL),
(5, '部门2子部门1', 4);
下面是一个递归查询的示例代码,它将按照级别显示部门:
WITH RECURSIVE department_hierarchy AS (
SELECT id, name, parent_id, 0 AS level
FROM departments
WHERE parent_id IS NULL
UNION ALL
SELECT d.id, d.name, d.parent_id, dh.level + 1
FROM departments d
JOIN department_hierarchy dh ON d.parent_id = dh.id
)
SELECT CONCAT(REPEAT('-', dh.level), dh.name) AS department_hierarchy
FROM department_hierarchy dh
ORDER BY dh.id;
上述代码使用了递归查询的技术,通过递归地将子部门与父部门连接起来,从而生成一个包含部门层级关系的结果集。最后,通过使用CONCAT函数和REPEAT函数来实现在结果中显示级别的效果,并按照部门的id进行排序。
希望以上信息对你有所帮助
原文地址: http://www.cveoy.top/t/topic/imGg 著作权归作者所有。请勿转载和采集!