mysql查詢上下級機構(gòu)的方法實例
前言
查詢上下級機構(gòu),這個功能可能會在日常工作中遇到,如果使用的oracle數(shù)據(jù)庫,那就很簡單,只需要使用oracle提供的層級查詢即可實現(xiàn)。如果使用的mysql數(shù)據(jù)庫,那么就需要自己實現(xiàn)這個功能。下面就介紹mysql實現(xiàn)上下級機構(gòu)查詢。
思路:
- 自定義mysql方法
- 利用mysql中的【FIND_IN_SET】【group_concat】兩個方法
(1)準備測試數(shù)據(jù)表
CREATE TABLE `org_test` ( `org_no` varchar(32) NOT NULL COMMENT '機構(gòu)編號', `org_name` varchar(200) NOT NULL COMMENT '機構(gòu)名稱', `p_org_no` varchar(32) DEFAULT NULL COMMENT '上級機構(gòu)編號', PRIMARY KEY (`org_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
測試數(shù)據(jù)
INSERT INTO `org_test` VALUES ('1001', '福建省', null); INSERT INTO `org_test` VALUES ('100101', '廈門市', '1001'); INSERT INTO `org_test` VALUES ('10010101', '思明區(qū)', '100101'); INSERT INTO `org_test` VALUES ('10010102', '湖里區(qū)', '100101'); INSERT INTO `org_test` VALUES ('10010103', '同安區(qū)', '100101'); INSERT INTO `org_test` VALUES ('100102', '福州市', '1001');
(2)查詢指定機構(gòu)的所有下級機構(gòu)(包括自身)
delimiter $$ CREATE FUNCTION getOrgChild (orgNo varchar(32)) RETURNS varchar(1000) CHARSET utf8 BEGIN -- 定義臨時變量 DECLARE tmpOrg varchar(1000) DEFAULT ''; -- 循環(huán)查詢,orgNo不為空,則循環(huán) WHILE orgNo IS NOT NULL DO -- 拼接所有查詢結(jié)果 IF tmpOrg = '' THEN SET tmpOrg = CONCAT(tmpOrg, orgNo); ELSE SET tmpOrg = CONCAT(tmpOrg, ',', orgNo); END IF; -- 查詢數(shù)據(jù) SELECT group_concat(org_no) INTO orgNo FROM org_test WHERE FIND_IN_SET(p_org_no, orgNo) > 0; END WHILE; -- 返回結(jié)果 RETURN tmpOrg; END $$
測試結(jié)果:
(3)查詢指定機構(gòu)的所有上級機構(gòu)(包括自身)
delimiter $$ CREATE FUNCTION getOrgParent (orgNo varchar(32)) RETURNS varchar(1000) CHARSET utf8 BEGIN -- 定義臨時變量 DECLARE tmpOrg varchar(1000) DEFAULT ''; -- 循環(huán)查詢,orgNo不為空,則循環(huán) WHILE orgNo IS NOT NULL DO -- 拼接所有查詢結(jié)果 IF tmpOrg = '' THEN SET tmpOrg = CONCAT(tmpOrg, orgNo); ELSE SET tmpOrg = CONCAT(tmpOrg, ',', orgNo); END IF; -- 查詢數(shù)據(jù) SELECT group_concat(p_org_no) INTO orgNo FROM org_test WHERE FIND_IN_SET(org_no, orgNo) > 0; END WHILE; -- 返回結(jié)果 RETURN tmpOrg; END $$
測試結(jié)果:
總結(jié)
到此這篇關(guān)于mysql查詢上下級機構(gòu)的文章就介紹到這了,更多相關(guān)mysql查詢上下級機構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux(Ubuntu)下Mysql5.6.28安裝配置方法圖文教程
這篇文章主要為大家詳細介紹了Linux(Ubuntu)下Mysql5.6.28安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01MySQL8.0報錯Public?Key?Retrieval?is?not?allowed的原因及解決方法
這篇文章主要給大家介紹了MySQL8.0報錯Public?Key?Retrieval?is?not?allowed的原因及解決方法,文中通過代碼示例和圖文介紹的非常詳細,有遇到相同問題的朋友可以參考閱讀一下2024-01-01Centos7.3下mysql5.7.18安裝并修改初始密碼的方法
這篇文章主要為大家詳細介紹了Centos7.3下mysql5.7.18安裝并修改初始密碼的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06