博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
父节点递归查询和子节点递归查询函数
阅读量:6278 次
发布时间:2019-06-22

本文共 1525 字,大约阅读时间需要 5 分钟。

本文为博主原创,未经允许不得转载:

由于在项目中用到了向上查询父节点的递归查询和向下查询子节点查询的递归查询,由于在实现过程中,写递归查询的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) default rootId;     WHILE rootId is not null  do       SET fid =(SELECT PARENTID FROM tbl_group_info WHERE GROUPID = rootId);       IF fid is not null THEN           SET str = concat(str, ',', fid);           SET rootId = fid;       ELSE           SET rootId = fid;       END IF;   END WHILE;   return str;  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 = '320100201712010942533991024gleax'

 

你可能感兴趣的文章
关于字符集,编码格式,大小端的简单总结
查看>>
js string 转 int Number()
查看>>
课堂练习:ex 4-20
查看>>
20155328 2016-2017-2 《Java程序设计》 第8周学习总结
查看>>
python操作redis--string
查看>>
echarts图表初始大小问题及echarts随窗口变化自适应
查看>>
Inherits、CodeFile、CodeBehind的区别
查看>>
创建一个SimpleDlg
查看>>
使用XML生成菜单
查看>>
udp,tcp对于socket的写法
查看>>
第二周个人赛
查看>>
推断Windows版本号新方法
查看>>
2017-4-18 ADO.NET
查看>>
RSuite 一个基于 React.js 的 Web 组件库
查看>>
技术博客网址收藏
查看>>
python 金融分析学习
查看>>
授人以渔不如授人以鱼
查看>>
matlab练习程序(图像Haar小波变换)
查看>>
【Java】从域名得到ip
查看>>
Mysql索引会失效的几种情况分析
查看>>