面试官给我画个表 让我根据0找100 没见过世面的我一顿胡说八道
回来钻研了下正确的解决办法
参考 https://blog.csdn.net/javadhh/article/details/48622743
关键的点是
1.while循环(我连mysql能while循环都不知道)
2.把parentid复制给id去找id的parentid 直到返回结果为空 那这个就是根节点了
为什么我得sql里要写两个select 因为最后返回空的时候就捕捉不到了 所以得找返回空之前的
我得函数
CREATE FUNCTION `getParentList`(rootId INT)
RETURNS varchar(1000)
BEGIN
DECLARE sParentTemp varchar(1000);
DECLARE sParentTemp1 varchar(1000);
SET sParentTemp = cast(rootId as CHAR);
WHILE sParentTemp is not null DO
SELECT 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);
运行结果
扫描二维码关注公众号,回复:
9067669 查看本文章