目录

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;

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
程序猿阿伟44 分钟前
《打破SQL与AI框架对接壁垒,解锁融合新路径》
数据库·人工智能·sql
点燃大海1 小时前
MySQL表结构导出(Excel)
java·数据库·python·mysql·spring
꧁坚持很酷꧂1 小时前
Qt远程连接数据库,注册,登录
开发语言·数据库·qt
加油,旭杏1 小时前
【Redis】服务端高并发分布式结构
数据库·redis·分布式
꧁༺朝花夕逝༻꧂2 小时前
MySQL--数据备份
数据库·mysql
快来卷java4 小时前
JVM虚拟机篇(三):JVM运行时数据区与方法区详解
java·jvm·mysql
共享家95274 小时前
Linux常用命令详解:从基础到进阶
linux·服务器·数据库
我是个假程序员8 小时前
sql server数据库可疑修复
数据库
极限实验室9 小时前
如何使用 Nginx 代理 Easysearch 服务
数据库·nginx
whn19779 小时前
selectdb修改表副本
数据库