面试官给我画个表 让我根据0找100 没见过世面的我一顿胡说八道
回来钻研了下正确的解决办法
参考 MySQL中进行树状所有子节点的查询_nano-dhh-CSDN博客
关键的点是
1.while循环(我连mysql能while循环都不知道)
2.把parentid复制给id去找id的parentid 直到返回结果为空 那这个就是根节点了
为什么我得sql里要写两个select 因为最后返回空的时候就捕捉不到了 所以得找返回空之前的
我得函数
CREATE FUNCTION `getParentList`(rootId INT)RETURNS varchar(1000)BEGINDECLARE sParentTemp varchar(1000);DECLARE sParentTemp1 varchar(1000);SET sParentTemp = cast(rootId as CHAR);WHILE sParentTemp is not null DOSELECT group_concat(parentid) INTO sParentTemp1 FROM user_role where id=sParentTemp;IF (sParentTemp1 IS NULL) THEN SET sParentTemp1 = sParentTemp;ELSE SET sParentTemp1 = NULL;END IF;SELECT group_concat(parentid) INTO sParentTemp FROM user_role where id=sParentTemp;END WHILE;RETURN sParentTemp1;END;
调用sql
select parentid From user_role where parentid=getParentList(0);
运行结果