mysql 从根迭归找子叶与从子叶迭归找根方法

使用多年的函数:

-- 上级迭归找下级的账号
DROP FUNCTION IF EXISTS `getChildNodes`;
CREATE FUNCTION `getChildNodes`(nodeId VARCHAR(100)) RETURNS mediumtext CHARSET utf8 
  DETERMINISTIC
BEGIN
    DECLARE sResult VARCHAR(2000);
    DECLARE sTempChd VARCHAR(2000);
 
    SET sResult = '-1';
    SET sTempChd =CAST(nodeId AS CHAR);
 
    WHILE sTempChd IS NOT NULL DO
      SET sResult = CONCAT(sResult,',',sTempChd);
 --     SELECT GROUP_CONCAT(id) INTO sTempChd FROM urm_department
  --    WHERE FIND_IN_SET(parentId,sTempChd)>0 ;
            SELECT GROUP_CONCAT(bu.username) INTO sTempChd FROM t_s_base_user bu,t_s_user u 
      WHERE  u.id = bu.id 
            and FIND_IN_SET(u.create_by,sTempChd)>0;
    END WHILE;
    RETURN sResult;
END;

 

-- 下级迭归找上级的账号
DROP FUNCTION IF EXISTS `getRootByChildNodes`;
CREATE FUNCTION `getRootByChildNodes`(nodeId VARCHAR(100)) RETURNS mediumtext CHARSET utf8 
  DETERMINISTIC
BEGIN
    DECLARE sResult VARCHAR(2000);
    DECLARE sTempChd VARCHAR(2000);
 
    SET sResult = '-1';
    SET sTempChd =CAST(nodeId AS CHAR);
 
    WHILE sTempChd IS NOT NULL DO
      SET sResult = CONCAT(sResult,',',sTempChd);
 --     SELECT GROUP_CONCAT(id) INTO sTempChd FROM urm_department
  --    WHERE FIND_IN_SET(parentId,sTempChd)>0 ;
            SELECT GROUP_CONCAT(u.create_by) INTO sTempChd FROM t_s_base_user bu,t_s_user u 
      WHERE  u.id = bu.id 
            and FIND_IN_SET(bu.username,sTempChd)>0;
    END WHILE;
    RETURN sResult;
END;

 

参考:

https://blog.csdn.net/qq_35653822/article/details/84787668

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值