mysql获取子父级节点

获取所有子节点

  DROP FUNCTION IF EXISTS `F_Co29_GetAllChildrenIdsOfTaskevent`;
DELIMITER //
CREATE FUNCTION `F_Co29_GetAllChildrenIdsOfTaskevent`(
    vId BIGINT
)
RETURNS VARCHAR(5000)
BEGIN    
    DECLARE sTemp VARCHAR(1000);
    DECLARE sTempChd VARCHAR(5000);
    DECLARE vCount INT;
    SET sTemp = '';
    SET sTempChd = CAST(vId AS CHAR);
    SET vCount = 1000;
    
    WHILE sTempChd IS NOT NULL AND vCount > 0 DO
        SET vCount = vCount - 1;
        IF LENGTH(sTemp) > 0 THEN        
            SET sTemp = CONCAT(sTemp,',',sTempChd);
        ELSE
            SET sTemp = sTempChd;
        END IF;
        SELECT GROUP_CONCAT(`Id`) INTO sTempChd FROM `taskevent` WHERE FIND_IN_SET(`PID`,sTempChd)>0;
    END WHILE;
    RETURN sTemp;

END//
DELIMITER ;

 

 

 

获取所有父级节点

  DROP FUNCTION IF EXISTS `F_Co30_GetAllParentIdsOfTaskevent`;
DELIMITER //
CREATE FUNCTION `F_Co30_GetAllParentIdsOfTaskevent`(
    vId BIGINT
)
RETURNS VARCHAR(5000)
BEGIN    
    DECLARE vPId BIGINT;   
    DECLARE sTemp VARCHAR(1000) DEFAULT '';
    
    WHILE vId IS NOT NULL DO
        SELECT `PID` into PId FROM `taskevent` WHERE `Id` = vId;
        IF vPId IS NOT NULL THEN
            SET sTemp = CONCAT(sTemp, ',', vPId);   
            SET vId = vPId;   
        ELSE
            SET vId = vPId;   
        END IF;   
    END WHILE;
    SET sTemp = SUBSTRING(sTemp,2);
    
    RETURN sTemp;

END//
DELIMITER ;

转载于:https://www.cnblogs.com/vofill/p/10208514.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值