mysql表关联组织机构树查询本级以及本级以下的所有数据
要查询MySQL表中的组织机构树,包括本级以及本级以下的所有数据,可以使用递归查询或者使用带有层级关系的查询。
以下是使用递归查询的方法:
首先,创建一个表来存储组织机构树的数据。假设表名为organization,包含以下字段:id,name,parent_id。
CREATE TABLE organization (
id INT PRIMARY KEY,
name VARCHAR(50),
parent_id INT
);
然后,插入一些示例数据:
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);
接下来,使用递归查询来获取本级以及本级以下的所有数据。假设要查询的本级组织机构的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
这将返回本级组织机构以及其下级组织机构的数据
原文地址: http://www.cveoy.top/t/topic/iKsn 著作权归作者所有。请勿转载和采集!