mysql递归

DELIMITER //
CREATE FUNCTION getChild(rootId INT) 
RETURNS VARCHAR(1000)
BEGIN
DECLARE sTemp VARCHAR(1000);
DECLARE sTempChd VARCHAR(1000);
SET sTemp ='$';
SET sTempChd = CAST(rootId AS CHAR);
WHILE sTempChd IS NOT NULL DO
SET sTemp = CONCAT(sTemp,',',sTempChd);
SELECT GROUP_CONCAT(id) INTO sTempChd FROM pyj_test WHERE FIND_IN_SET(parentid,sTempChd)>0;
END WHILE;
RETURN sTemp;
END;
//
SELECT * FROM pyj_test WHERE FIND_IN_SET(id,getChildList(4)) 
-- //查找D盘下所有子目录


数据库数据
id pname parentid


0 D盘 null
1 一级目录 0
2 二级目录 1
3 二级目录 1
4 E盘 null
5 一级目录 4
6 一级目录 4
7 二级目录 6
8 二级目录 6
9 二级目录 5
10 二级目录 5
11 三级目录 3
12 三级目录 2

猜你喜欢

转载自blog.csdn.net/black_tshirt/article/details/79217050