千家信息网

mysql怎么查询上下级机构

发表于:2024-09-23 作者:千家信息网编辑
千家信息网最后更新 2024年09月23日,这篇文章主要讲解了"mysql怎么查询上下级机构",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"mysql怎么查询上下级机构"吧!思路:自定义mysql
千家信息网最后更新 2024年09月23日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安全错误 数据库的锁怎样保障安全 潍坊纺织管理软件开发 接收邮件的服务器叫什么名字 肥东企业网络技术咨询服务电话 网络安全论文黑客 卡巴斯基管理服务器服务账户 网络安全法的主体国家 网络安全等级测凭师 电脑拨号软件开发 重装系统后找不到服务器 广州电商软件开发如何收费 合泰杯用什么软件开发 守望服务器 网络是网络安全手抄报 网络安全员要有什么性格特点 华为云服务器密码找回 南沙专业网络安全服务 计算机网络技术专科生求职信 工业级软件开发流程图 关于数据库管理技术的 漂移乱斗为什么不能连接服务器 闵行区进口软件开发价格查询 可视化管理服务系统网络安全等级 预防网络安全隐患 想做网络游戏服务器多少钱 百度服务器的英文是什么 河北省校园网络安全先进个人 dell网络安全模式 网络安全证书包含哪些内容 服务器网络延时多久正常 php 数据库乱码
0