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

Mysql无限递归树(由子找父数据父名称)

2016-03-06 12:32 495 查看
接到一个需求,就是订单找找到它的所有推广关系,把推广人的名字按层级导出来,找了好久,mysql没有支持无限递归树的函数,查了资料转换为自己要的查询,了解了一次mysql的函数,感觉棒棒哒

DROP FUNCTION IF EXISTS getParentList;
CREATE FUNCTION `getParentList`(rootId INT)
RETURNS varchar(1000)
BEGIN

#定义变量
DECLARE sParentList varchar(1000);
DECLARE sParentTemp varchar(1000);
DECLARE sParentName varchar(1000);
DECLARE sParentTmpName varchar(1000);
DECLARE sParentTmpMobile varchar(1000);

#将入参强制转换为字符串
SET sParentTemp = cast(rootId as CHAR);

WHILE sParentTemp is not null DO #当条件为不为空的时候执行(找不到上级就可以执行)

SET sParentTmpName = ( SELECT true_name FROM zjj_user.user_profile where user_id = sParentTemp ); #查找你需要的字段

IF (sParentList is not null) THEN #判断只有一层的关系
SET sParentList = concat(sParentTemp,',',sParentList);
SET sParentName = CONCAT(sParentTmpName,',',sParentName); #将你需要输出的字段进行拼接
ELSE
SET sParentList = concat(sParentTemp);
SET sParentName = concat(sParentTmpName);
END IF;

SELECT group_concat(p_uid) INTO sParentTemp FROM user_introduce_relation where user_id = sParentTemp; #将变量替换成找到的值

END WHILE;

RETURN sParentName; #返回需要的
END;

select getParentList(1123);

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