数据结构
其中有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';
查询结果