在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进行排序。

希望以上信息对你有所帮助

想要一个数据结果如下一个表想按照级别显示出来mysql怎么写?部门1-部门1子部门1-部门1子部门2部门2-部门2子部门1

原文地址: http://www.cveoy.top/t/topic/imGg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录