您的位置:首页 > 数据库 > MySQL

MYSQL 自定义函数,查询节点所有父节点、查询节点所有子节点

2021-04-10 01:02 1211 查看

一.查询所有父节点。

1.sql代码

select getParentIdList(3402)

2.创建函数

    CREATE FUNCTION `getParentIdList`(rootId INT) RETURNS varchar(1000) CHARSET utf8mb4
    DETERMINISTIC
BEGIN   
DECLARE fid INT default 0;   
DECLARE str varchar(1000) default rootId;   
 
WHILE rootId is not null  do   
    SET fid =(SELECT pid FROM t_space WHERE id = rootId);   
    IF fid is not null THEN   
        SET str = concat(str, ',', CAST(fid AS CHAR));   
        SET rootId = fid;   
    ELSE   
        SET rootId = fid;   
    END IF;   
END WHILE;   
return str;  
END

二.查询所有子节点

1.sql代码
     select getChildrenIdList(1)

2.创建函数

CREATE FUNCTION `getChildrenIdList`(rootId INT) RETURNS varchar(1000) CHARSET utf8mb4
    DETERMINISTIC
BEGIN
   DECLARE sTemp VARCHAR(1000) default rootId;
   DECLARE sTempChd VARCHAR(1000);   
  
   SET sTempChd =cast(rootId as CHAR);
 
   WHILE sTempChd is not null do
     if sTemp<>sTempChd then 
               SET sTemp = concat(sTemp,',',sTempChd);
     END IF;
     SELECT group_concat(id) INTO sTempChd FROM unify_space_database.t_space where FIND_IN_SET(pid,sTempChd);
    END WHILE;
    RETURN sTemp;
   END

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: