千家信息网

mysql怎么查询上下级机构

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要讲解了"mysql怎么查询上下级机构",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"mysql怎么查询上下级机构"吧!思路:自定义mysql
千家信息网最后更新 2025年01月20日mysql怎么查询上下级机构

这篇文章主要讲解了"mysql怎么查询上下级机构",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"mysql怎么查询上下级机构"吧!

思路:

  • 自定义mysql方法

  • 利用mysql中的【FIND_IN_SET】【group_concat】两个方法

(1)准备测试数据表

CREATE TABLE `org_test` (  `org_no` varchar(32) NOT NULL COMMENT '机构编号',  `org_name` varchar(200) NOT NULL COMMENT '机构名称',  `p_org_no` varchar(32) DEFAULT NULL COMMENT '上级机构编号',  PRIMARY KEY (`org_no`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

测试数据

INSERT INTO `org_test` VALUES ('1001', '福建省', null);INSERT INTO `org_test` VALUES ('100101', '厦门市', '1001');INSERT INTO `org_test` VALUES ('10010101', '思明区', '100101');INSERT INTO `org_test` VALUES ('10010102', '湖里区', '100101');INSERT INTO `org_test` VALUES ('10010103', '同安区', '100101');INSERT INTO `org_test` VALUES ('100102', '福州市', '1001');

(2)查询指定机构的所有下级机构(包括自身)

delimiter $$CREATE FUNCTION getOrgChild (orgNo varchar(32)) RETURNS varchar(1000) CHARSET utf8BEGIN        -- 定义临时变量        DECLARE tmpOrg varchar(1000) DEFAULT '';        -- 循环查询,orgNo不为空,则循环        WHILE orgNo IS NOT NULL DO                -- 拼接所有查询结果                IF tmpOrg = '' THEN                        SET tmpOrg = CONCAT(tmpOrg, orgNo);                ELSE                        SET tmpOrg = CONCAT(tmpOrg, ',', orgNo);                END IF;                -- 查询数据                SELECT group_concat(org_no) INTO orgNo FROM org_test WHERE FIND_IN_SET(p_org_no, orgNo) > 0;        END WHILE;                -- 返回结果        RETURN tmpOrg;END $$

测试结果:

(3)查询指定机构的所有上级机构(包括自身)

delimiter $$CREATE FUNCTION getOrgParent (orgNo varchar(32)) RETURNS varchar(1000) CHARSET utf8BEGIN        -- 定义临时变量        DECLARE tmpOrg varchar(1000) DEFAULT '';        -- 循环查询,orgNo不为空,则循环        WHILE orgNo IS NOT NULL DO                -- 拼接所有查询结果                IF tmpOrg = '' THEN                        SET tmpOrg = CONCAT(tmpOrg, orgNo);                ELSE                        SET tmpOrg = CONCAT(tmpOrg, ',', orgNo);                END IF;                -- 查询数据                SELECT group_concat(p_org_no) INTO orgNo FROM org_test WHERE FIND_IN_SET(org_no, orgNo) > 0;        END WHILE;                -- 返回结果        RETURN tmpOrg;END $$

测试结果:

感谢各位的阅读,以上就是"mysql怎么查询上下级机构"的内容了,经过本文的学习后,相信大家对mysql怎么查询上下级机构这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

查询 机构 结果 上下 上下级 数据 循环 测试 学习 上级 内容 变量 思路 方法 下级 两个 名称 就是 情况 数据表 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 分布式系统数据库设计 制造型企业基础数据库 湖南长沙牛耳软件开发的地址 谢希仁《计算机网络技术》 江苏高频服务器怎么调云空间 我的世界呆呆空岛服务器 软件开发需要数学 数字人直播软件开发 检查服务器安全 中国特有种子植物图谱数据库 c 连接数据库字符串 泰州车载工控机服务器 如何搞疯一个服务器方舟生存进化 软件开发毕业适合找什么工作 美国的软件开发发达吗 如何把只读文本框内容存入数据库 数据库文件格式 战术小队有时候登不进去服务器 数据库怎么把null转变为空值 全国三级网络技术考纲 2017年两会网络安全 广东省深圳市网络安全中心 什么叫做网络安全生物安全 大连虎爸爸计算机软件开发 迁安电子网络技术诚信合作 如何实现数据库的连接 qq网络安全管理员 新乡住宿软件开发 七日杀服务器要多少内存 人员数据库软件
0