MySQL 组织机构树查询:本级及以下数据递归查询与层级查询

在 MySQL 表中查询组织机构树,包括本级以及本级以下的所有数据,可以使用递归查询或者使用带有层级关系的查询。

递归查询方法

1. 创建组织机构树表

假设表名为'organization',包含以下字段:'id','name','parent_id'。

CREATE TABLE organization (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  parent_id INT
);

2. 插入示例数据

INSERT INTO organization (id, name, parent_id) VALUES
(1, '组织A', NULL),
(2, '组织B', 1),
(3, '组织C', 1),
(4, '组织D', 2),
(5, '组织E', 2),
(6, '组织F', 3),
(7, '组织G', 3);

3. 递归查询

假设要查询的本级组织机构的'id'为1,以下代码将返回本级以及本级以下的所有组织机构数据:

WITH RECURSIVE cte AS (
  SELECT id, name, parent_id
  FROM organization
  WHERE id = 1
  UNION ALL
  SELECT o.id, o.name, o.parent_id
  FROM organization o
  INNER JOIN cte ON o.parent_id = cte.id
)
SELECT * FROM cte;

带有层级关系的查询方法

SELECT t1.id, t1.name, t1.parent_id, t2.id AS child_id, t2.name AS child_name
FROM organization t1
LEFT JOIN organization t2 ON t2.parent_id = t1.id
WHERE t1.id = 1

该方法将返回本级组织机构以及其下级组织机构的数据。

总结

本文介绍了两种在 MySQL 中查询组织机构树的方法,分别是递归查询和带有层级关系的查询。您可以根据实际需求选择合适的方法。

MySQL 组织机构树查询:本级及以下数据递归查询与层级查询

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

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