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

-- 创建部门表
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;

相关推荐

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

    2024-01-06 12:48:04       57 阅读
  2. 计算技术概述_3.云计算部署方式

    2024-01-06 12:48:04       28 阅读
  3. 优化SQL方法

    2024-01-06 12:48:04       41 阅读
  4. 优化SQL方法

    2024-01-06 12:48:04       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-06 12:48:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-06 12:48:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-06 12:48:04       87 阅读
  4. Python语言-面向对象

    2024-01-06 12:48:04       96 阅读

热门阅读

  1. MySQL 函数大全

    2024-01-06 12:48:04       59 阅读
  2. oracle DG broken工具配置

    2024-01-06 12:48:04       50 阅读
  3. 基于缺陷模式的软件测试

    2024-01-06 12:48:04       58 阅读
  4. 【C程序设计】C enum(枚举)

    2024-01-06 12:48:04       57 阅读
  5. 103. 二叉树的锯齿形层序遍历

    2024-01-06 12:48:04       70 阅读