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;

相关推荐
奔跑吧树袋熊9 小时前
Oracle 9i 与 19c 跨版本字符集乱码(US7ASCII ↔ AL32UTF8)DBLink 解决方案
数据库·oracle
byzh_rc9 小时前
[AI编程从入门到入土] 配置文件
java·数据库·ai编程
oradh9 小时前
Oracle数据库模式、对象的入门概述
数据库·oracle·oracle数据库基础
雷工笔记9 小时前
SQL语句解析:DESC LIMIT 1
数据库·sql
城数派9 小时前
2025年全国地级市间驾车出行距离和出行时间矩阵数据
数据库·arcgis·信息可视化·数据分析
wgzrmlrm7410 小时前
SQL实现按用户偏好进行分组汇总_自定义聚合规则
jvm·数据库·python
lzhdim10 小时前
SQL 入门 10:SQL 内置函数:数值、字符串与时间处理
前端·数据库·sql
QX_hao10 小时前
PGsql的常用命令(对比mysql)
数据库·mysql·pgsql
半点闲10 小时前
入门 SQLAlchemy 教程:从 0 到 1 创建数据库
数据库·python·sqlite·sqlalchemy
xcjbqd010 小时前
CSS如何给Bootstrap侧边菜单加图标_使用font-awesome结合CSS
jvm·数据库·python