欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql查詢(xún)上下級(jí)機(jī)構(gòu)的方法實(shí)例

 更新時(shí)間:2022年04月20日 15:42:49   作者:朱友斌  
大家應(yīng)該都知道表里有上下級(jí)機(jī)構(gòu)的,下面這篇文章主要給大家介紹了關(guān)于mysql查詢(xún)上下級(jí)機(jī)構(gòu)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

查詢(xún)上下級(jí)機(jī)構(gòu),這個(gè)功能可能會(huì)在日常工作中遇到,如果使用的oracle數(shù)據(jù)庫(kù),那就很簡(jiǎn)單,只需要使用oracle提供的層級(jí)查詢(xún)即可實(shí)現(xiàn)。如果使用的mysql數(shù)據(jù)庫(kù),那么就需要自己實(shí)現(xiàn)這個(gè)功能。下面就介紹mysql實(shí)現(xiàn)上下級(jí)機(jī)構(gòu)查詢(xún)。

思路:

  • 自定義mysql方法
  • 利用mysql中的【FIND_IN_SET】【group_concat】?jī)蓚€(gè)方法

(1)準(zhǔn)備測(cè)試數(shù)據(jù)表

CREATE TABLE `org_test` (
  `org_no` varchar(32) NOT NULL COMMENT '機(jī)構(gòu)編號(hào)',
  `org_name` varchar(200) NOT NULL COMMENT '機(jī)構(gòu)名稱(chēng)',
  `p_org_no` varchar(32) DEFAULT NULL COMMENT '上級(jí)機(jī)構(gòu)編號(hào)',
  PRIMARY KEY (`org_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

測(cè)試數(shù)據(jù)

INSERT INTO `org_test` VALUES ('1001', '福建省', null);
INSERT INTO `org_test` VALUES ('100101', '廈門(mén)市', '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)查詢(xún)指定機(jī)構(gòu)的所有下級(jí)機(jī)構(gòu)(包括自身)

delimiter $$
CREATE FUNCTION getOrgChild (orgNo varchar(32)) RETURNS varchar(1000) CHARSET utf8
BEGIN
	-- 定義臨時(shí)變量
	DECLARE tmpOrg varchar(1000) DEFAULT '';
	-- 循環(huán)查詢(xún),orgNo不為空,則循環(huán)
	WHILE orgNo IS NOT NULL DO
		-- 拼接所有查詢(xún)結(jié)果
		IF tmpOrg = '' THEN
			SET tmpOrg = CONCAT(tmpOrg, orgNo);
		ELSE
			SET tmpOrg = CONCAT(tmpOrg, ',', orgNo);
		END IF;
		-- 查詢(xún)數(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 $$

測(cè)試結(jié)果:

(3)查詢(xún)指定機(jī)構(gòu)的所有上級(jí)機(jī)構(gòu)(包括自身)

delimiter $$
CREATE FUNCTION getOrgParent (orgNo varchar(32)) RETURNS varchar(1000) CHARSET utf8
BEGIN
	-- 定義臨時(shí)變量
	DECLARE tmpOrg varchar(1000) DEFAULT '';
	-- 循環(huán)查詢(xún),orgNo不為空,則循環(huán)
	WHILE orgNo IS NOT NULL DO
		-- 拼接所有查詢(xún)結(jié)果
		IF tmpOrg = '' THEN
			SET tmpOrg = CONCAT(tmpOrg, orgNo);
		ELSE
			SET tmpOrg = CONCAT(tmpOrg, ',', orgNo);
		END IF;
		-- 查詢(xún)數(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 $$

測(cè)試結(jié)果:

總結(jié)

到此這篇關(guān)于mysql查詢(xún)上下級(jí)機(jī)構(gòu)的文章就介紹到這了,更多相關(guān)mysql查詢(xún)上下級(jí)機(jī)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

最新評(píng)論