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;

相关推荐
陳陈陳6 小时前
LLM的"消化系统":一文讲透RAG文档加载与智能切割
数据库·langchain·llm
IvorySQL6 小时前
云环境下PostgreSQL的Cgroup内存管理实践
java·数据库·postgresql
霸道流氓气质7 小时前
CodeBuddy中配置Redis MCP 连接与排错实战
数据库·redis·缓存
王琦03187 小时前
第一章 数据库-理论基础
数据库
Csvn7 小时前
📊 SQL 入门 Day 4:聚合函数 — COUNT / SUM / AVG / MIN / MAX
后端·sql
数行拙笔7 小时前
Redis---hash类型
数据库·redis·哈希算法
哈__7 小时前
MCP 协议落地实践:国产化数据库 AI 一站式 SQL 诊断调优方案
数据库·人工智能·sql
范什么特西7 小时前
mysql总结
数据库·mysql
一招合理7 小时前
Accordion:一种HBase内存压缩算法
大数据·数据库·hbase
明亮 Blog8 小时前
Wi-Fi 6/7的物联网“芯”机遇:高带宽低延时如何重塑智慧工厂的AGV物流革命
服务器·网络·数据库