700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java递归查询父节点_父节点递归查询和子节点递归查询函数

java递归查询父节点_父节点递归查询和子节点递归查询函数

时间:2024-05-13 03:55:55

相关推荐

java递归查询父节点_父节点递归查询和子节点递归查询函数

本文为博主原创,未经允许:

由于在项目中用到了向上查询父节点的递归查询和向下查询子节点查询的递归查询,由于在实现过程中,写递归查询的sql函数

花费了较长的时间,所以在此总结一下,两种递归查询的函数的实现写法:

向下查询子节点的递归查询:

先展示表结构:

根据区域查询对应的下级区域信息,其中parentId为zoneId对应的下级区域id信息。当再查询下级区域信息时,即可将parentID作为zoneId来

查询子节点信息,由于不同区域对应的子节点层数也不一样,当要获取所有子节点的zoneId时,可以使用以下的递归查询:

BEGIN

DECLARE sTemp VARCHAR(10000);

DECLARE sTempChd VARCHAR(10000);

SET sTemp= '$';

SET sTempChd=CAST(rootId AS CHAR);

WHILE sTempChd IS NOT NULL DO

SET sTemp= CONCAT(sTemp, ',', sTempChd);

SELECT GROUP_CONCAT(zoneid) INTO sTempChd FROM tbl_zone_info WHERE STATUS!='3' and FIND_IN_SET(parentid,sTempChd)>0;

END WHILE;

RETURN sTemp;

END

使用方式:

向上查询的父查询递归查询:

先展示表结构:

根据组id查询对应的父组有哪些:parentId即为对应groupId组id的父组id,当获取到父组id即parentid,即可以将parentId作为groupId组id

查询到父组的信息。

实现的递归函数为:

BEGIN

DECLARE fid varchar(100) default '';

DECLARE str varchar(1000) defaultrootId;

WHILE rootId is notnull doSET fid=(SELECT PARENTID FROM tbl_group_info WHERE GROUPID =rootId);

IF fid is notnullTHEN

SET str= concat(str, ',', fid);

SET rootId=fid;

ELSE

SET rootId=fid;

END IF;

END WHILE;returnstr;

END

使用方式:

当得知层级关系时,可以直接使用以下sql,进行自我联查:

select a.GROUPNAME AS lev1,b.GROUPNAME AS lev2,c.GROUPNAME AS lev3,d.GROUPNAME AS lev4 from tbl_group_info a

LEFT JOIN tbl_group_info b ON a.PARENTID = b.GROUPID

LEFT JOIN tbl_group_info c ON b.PARENTID = c.GROUPID

LEFT JOIN tbl_group_info d ON c.PARENTID = d.GROUPID

where a.GROUPID = '301942533991024gleax'

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。