mysql存储过程递归查询所有父类_mysql递归查询父部门下的所有层级子部门的存储过程...

数据结构

dab2b63dddc161610992ec6bfe2ef016.png

其中有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

执行完上边的语句,就会在函数里面多了一个函数

f037dc4e9216570a762f8486828b66d7.png

然后  以后只需要执行

select * from sys_organization_info where FIND_IN_SET(GUID,getChildList("2018082015251077310005")) and guid<>'2018082015251077310005';

查询结果

bf1c31ac98bf57ad3466080ff3978d34.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值