使用mysql时,有很多排序规则,比如左右节点,比如子父类设置,Level等级区分等等;
我们这里仅做子父类介绍,其余的其他文章在做描述
结构图
注: parent 即为user_id ,这里显示顺序是: 1000 > 1010 > 1013;
而我们查询出来的呢,就是 1000 下面的所有子节点, 即可用无限递增查询,不管你有多少个子节点,子子节点;
结果图
代码:
CREATE FUNCTION getAllCompanyChildUID_func(sonId INT)
RETURNS varchar(255)
BEGIN
DECLARE sTemp VARCHAR(1000);
DECLARE sTempChd VARCHAR(1000);
DECLARE i int;
SET sTemp = '';
SET sTempChd =cast(sonId as CHAR);
set i=0;
WHILE sTempChd is not null DO
if i>0 then
if i=1 THEN
set sTemp = sTempChd;
ELSE
SET sTemp = concat(sTemp,',',sTempChd);
end if;
end if;
SELECT group_concat(user_id) INTO sTempChd FROM user_company where FIND_IN_SET(parent,sTempChd)>0;
set i=i+1;
END WHILE;
RETURN sTemp;
END
注意: 递归默认是连自己也查询出来,这里为了排除自身,加上if判断, 最里层的if判断是去除多余的分割","好的,不需要的可以拿掉相对于的if判断
执行方式