数据结构

其中有PARENTID和SECONDPID两个父级ID
存储过程
CREATE FUNCTION `getChildList`(rootId VARCHAR)
RETURNS varchar(4000)
BEGIN
#声明两个局部变量
DECLARE sTemp VARCHAR(4000);
DECLARE sTempChd VARCHAR(4000);
#初始化局部变量
SET sTemp = '';
#调用cast函数将int转换为char
SET sTempChd =rootId;
#递归拼接
WHILE sTempChd is not null DO
#存储每次递归结果
SET sTemp = concat(sTemp,',',sTempChd);
#将参数作为pid,然后查询其子id,然后将子id作为pid,
#查询以子id为pid的子id,依次循环下去,直到所有节点都为叶子节点
SELECT group_concat(GUID) INTO sTempChd FROM sys_organization_info where FIND_IN_SET(PARENTID,sTempChd)>0 or FIND_IN_SET(SECONDPID,sTempChd)>0;
END WHILE;
RETURN sTemp;
END
执行完上边的语句,就会在函数里面多了一个函数

然后 以后只需要执行
select * from sys_organization_info where FIND_IN_SET(GUID,getChildList("2018082015251077310005")) and guid<>'2018082015251077310005';
查询结果

本文介绍了一种使用存储过程和递归查询方法,通过调用getChildList函数获取指定ID下所有子级ID的列表。此方法适用于具有层级结构的数据表,如组织机构信息表,其中包含PARENTID和SECONDPID两个父级ID字段。
3191

被折叠的 条评论
为什么被折叠?



