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

由于在项目中用到了向上查询父节点的递归查询和向下查询子节点查询的递归查询,由于在实现过程中,写递归查询的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 = '320100201712010942533991024gleax'

java递归查询父节点_父节点递归查询和子节点递归查询函数相关推荐

  1. java 获取树的子节点,工作总结---获取树的子节点及树的复制

    一:树节点的结构 class KprDimension{ private String id; //树的当前节点id private String name; //树节点名称 private Stri ...

  2. 如何删除链表的最后一个节点_面试:删除链表的节点

    给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点.返回删除后的链表的头节点.注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5 输出: [4 ...

  3. js添加多个子节点_在js中添加新节点

    Insert title here window.onload = function(){ alert(1); //document.createElement(elementTagName); // ...

  4. js添加多个子节点_js添加和删除节点, 方法调用是通过子节点中的节点来添加的呢。...

    html> new document 学号 姓名 操作 xh001 王小明 删除 xh002 刘小芳 删除 var table = document.getElementById("t ...

  5. js添加多个子节点_JS创建DOM节点-使用document.createElement()创建子节点或同级节点...

    在一个Web页面中,需要弹出一个提示信息显示给用户.基于这个需求,要使用document.createElement()创建一个DOM节点.创建完节点后,还要使用appendChild()或inser ...

  6. JavaScript 技术篇-js只获取本节点text文本,不包含子节点

    innerText 和 textContent 都是获取所有节点的 firstChild.nodeValue 是获取本节点的text文本,不包含子节点的. 喜欢的点个赞❤吧!

  7. php移除所有子节点,PHP 循环删除无限分类子节点的实现代码

    private  function _deleteSubNode($ids){ $subNodes = array(); $mod = D('Node'); foreach (explode ( ', ...

  8. java 获取xml所有节点_获取XML下的所有节点(父节点及子节点)

    展开全部 xml结构 本方案用来解决XML根据父节点的属性得到指定子节点的属性的值 需要的jar包: jar包本方案的xml结构为以下格式62616964757a686964616fe58685e5a ...

  9. jquery.ztree 打开父节点_父进程欺骗技术

    文章正文 监控父进程和子进程之间的关系是威胁检测团队检测恶意活动的常用技术,例如,如果powershell是子进程,而Microsoft Word是父进程,这种这种异常行为各种EDR可以很容易地检测到 ...

最新文章

  1. iPhone开发四剑客之《Objective-C基础教程》
  2. JDK1.8新特性:Stream流
  3. Java常见的几种内存溢出及解决方法
  4. Android风格与主题
  5. git 应用 远程仓库分歧
  6. elasticsearch同义词配置elasticsearch-analysis-dynamic-synonym
  7. ADB工具华为鸿蒙,adb工具包华为版
  8. [资料] GIS资料汇总(GIS+Envi+erdas视频教程)
  9. php 微信新增永久素材
  10. 电脑开启后,进入桌面黑屏,任务管理器可以用(排除是硬件问题)
  11. 书法教育类毕业论文文献包含哪些?
  12. COM---EXE中的服务器
  13. 通过Nginx反向代理提供网站内嵌
  14. 北斗同步时钟(主时钟控制器)应用于电气化铁道远动系统
  15. 解决win10 保存文件到C盘没有权限问题
  16. 北大计算机专业年薪,清华、北大毕业生的年薪全国最高吗?一般能达到多少?...
  17. 到底什么是SDWAN服务?
  18. 触目2006信息化之灾
  19. Redis从阿里云迁移至华为云
  20. CentOS 启动后网卡自动启动不了 的解决办法

热门文章

  1. 面向过程和面向对象的区别及优缺点
  2. 揭秘数极客Android无埋点数据采集原理
  3. 改善足底筋膜炎的伸展运动
  4. 第二篇 关于BMP图像
  5. c++实验三-个人所得税计算器
  6. 嘣嘣嘣!开枪啦~有狙击手
  7. Docker-compose
  8. 比较依那西普单药与联合光疗治疗依那西普单药难治性银屑病
  9. 几种常见shell解释器(sh,bash,csh,tcsh,ash)以及bash的优点
  10. api平台通用签名机制