MySQL 组织机构树查询:本级及以下数据递归查询与层级查询
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 中查询组织机构树的方法,分别是递归查询和带有层级关系的查询。您可以根据实际需求选择合适的方法。
原文地址: https://www.cveoy.top/t/topic/qqGY 著作权归作者所有。请勿转载和采集!