背景:
最近在开发中,需要查询数据的组织层级关系,故写下这篇博文分享给大家一起学习,这里只做下级往上查询,上级往下级同理
- 1 .创建一个函数
CREATE FUNCTION `getParentList` ( parentId INT ) RETURNS VARCHAR ( 1000 ) BEGIN
DECLARE
temp VARCHAR ( 1000 );
DECLARE
tempParent VARCHAR ( 1000 );
SET temp = '';
SET tempParent = parentId;
#循环递归
WHILE
tempParent IS NOT NULL DO
#判断是否是第一个,不加的话第一个会为空
IF
temp != '' THEN
SET temp = concat( temp, ',', tempParent );
ELSE
SET temp = tempParent;
END IF;
SET temp = concat( temp, ',', tempParent );
SELECT
group_concat( parent_id ) INTO tempParent
FROM
organization
WHERE
parent_id <> id
AND FIND_IN_SET( id, tempParent )> 0;
END WHILE;
RETURN temp;
END
在不同的数据库版本上有可能会出现如下错误: