mysql 通过sql计算部门路径的方法

发布时间:2024年01月05日

-- 创建部门表
CREATE TABLE department (
? ? dept_id INT PRIMARY KEY AUTO_INCREMENT,
? ? parent_id INT,
? ? name VARCHAR(50)
);
?
-- 添加测试数据
INSERT INTO department (name, parent_id) VALUES ('公司', NULL), ('技术部', 1), ('市场部', 1), ('研发组', 2), ('产品组', 2), ('运营组', 3), ('客服组', 3);
?
-- 定义递归函数
DELIMITER $$
CREATE FUNCTION getDepartmentPaths(deptId INT) RETURNS TEXT BEGIN
? ? DECLARE resultText TEXT DEFAULT ''; -- 保存结果文本
? ??
? ? SELECT GROUP_CONCAT(name SEPARATOR ' > ') INTO resultText FROM department WHERE find_in_set(parent_id, @path := CONCAT(@path, ',', dept_id)) IS NOT NULL;
? ??
? ? IF CHARACTER_LENGTH(resultText) = 0 THEN
? ? ? ? SET resultText = '-';
? ? END IF;
? ??
? ? RETURN resultText;
END$$
DELIMITER ;
?
-- 调用递归函数获取部门路径
SELECT dept_id, getDepartmentPaths(dept_id) AS path FROM department ORDER BY dept_id ASC;

文章来源:https://blog.csdn.net/okyanxingkui/article/details/135411808
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。