MYSQL循环查询上级部门

创建表

sql 复制代码
CREATE TABLE `ceshi_dept` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `deptname` varchar(255) DEFAULT NULL,
  `deptnum` int DEFAULT NULL,
  `parentnum` int DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

添加数据

sql 复制代码
INSERT INTO `ruoyi`.`ceshi_dept`(`id`, `deptname`, `deptnum`, `parentnum`) VALUES (1, '董事会', 1, NULL);
INSERT INTO `ruoyi`.`ceshi_dept`(`id`, `deptname`, `deptnum`, `parentnum`) VALUES (2, '生产研发部', 2, 1);
INSERT INTO `ruoyi`.`ceshi_dept`(`id`, `deptname`, `deptnum`, `parentnum`) VALUES (3, '软件部', 3, 2);
INSERT INTO `ruoyi`.`ceshi_dept`(`id`, `deptname`, `deptnum`, `parentnum`) VALUES (4, '测试部', 4, 3);

查询所有上级部门

sql 复制代码
WITH RECURSIVE dept_hierarchy AS (  
    SELECT id, deptname, deptnum, parentnum  
    FROM ceshi_dept  
    WHERE id = 4  -- 开始查询的起点  
    UNION ALL  
    SELECT c.id, c.deptname, c.deptnum, c.parentnum  
    FROM ceshi_dept c  
    JOIN dept_hierarchy dh ON c.id = dh.parentnum  
) 
SELECT * FROM dept_hierarchy where id!=4  ORDER BY id asc;  -- 排除起始点本身

查询所有下级部门

sql 复制代码
WITH RECURSIVE dept_hierarchy AS (  
    SELECT id, deptname, deptnum, parentnum  
    FROM ceshi_dept  
    WHERE parentnum = 1  -- 开始查询的上级部门ID  
    UNION ALL  
    SELECT c.id, c.deptname, c.deptnum, c.parentnum  
    FROM ceshi_dept c  
    JOIN dept_hierarchy dh ON c.parentnum = dh.id  
)  
SELECT * FROM dept_hierarchy ORDER BY id asc;
相关推荐
一 乐5 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
Boilermaker19925 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
Cherry的跨界思维5 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
alonewolf_996 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
一嘴一个橘子6 小时前
spring-aop 的 基础使用(啥是增强类、切点、切面)- 2
java
sheji34166 小时前
【开题答辩全过程】以 中医药文化科普系统为例,包含答辩的问题和答案
java
1.14(java)6 小时前
SQL数据库操作:从CRUD到高级查询
数据库
恋爱绝缘体16 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
wszy18097 小时前
新文章标签:让用户一眼发现最新内容
java·python·harmonyos
Full Stack Developme7 小时前
数据库索引的原理及类型和应用场景
数据库