zoukankan      html  css  js  c++  java
  • 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 ;

  • 相关阅读:
    vmware中3中网络模式的区别
    常用 Git 命令清单 转
    inotify监控目录变化重启服务器tornado项目
    sed处理url编码解码=== web日志的url处理
    LVM 'Can’t open /dev/sdb1 exclusively. Mounted filesystem?' Problem
    Vimium使用快捷键总结
    sed 引入shell变量
    shell 除法 小数点
    selinux 导致无法启动httpd
    linux查看ssh用户登录日志与操作日志
  • 原文地址:https://www.cnblogs.com/vofill/p/10208514.html
Copyright © 2011-2022 走看看