#存储文本信息表
CREATE TABLE WordInfoEntity(
word_id VARCHAR(32) PRIMARY KEY NOT NULL, # 主键ID UUID
word_greda INT NOT NULL, #等级: 0:正文文本 1,2,3,4 等级
word_name VARCHAR(100) NOT NULL, #标题名
word_content VARCHAR(20000), #内容:标题名+正文文本
word_parentId VARCHAR(32) NOT NULL #父级id (UUid)
);

查子集合:向下递归(亲测能用)

#自定义递归函数,用于查询传入id的所有子id
DELIMITER // # “//” 默认开头,必须以“//” 结尾
CREATE FUNCTION `getChildLst`(rootId VARCHAR(32)) #设置function参数类型
RETURNS VARCHAR(1000) READS SQL DATA #定义返回的数据类型
BEGIN #开始
DECLARE sTemp VARCHAR(1000); #定义全局变量,查询出来的id进行拼接
DECLARE sTempChd VARCHAR(1000); #临时变量,用于循环查询的单次接收
SET sTemp = '$'; # 设置初始值 SET sTempChd =CAST(rootId AS CHAR); #赋值,进行查询你
#SET sTempChd =rootId ; #赋值,进行查询你 WHILE sTempChd IS NOT NULL DO #此处为循环 为null结束循环
SET sTemp = CONCAT(sTemp,',',sTempChd); #将查询的所有子节点赋值为全局
#GROUP_CONCAT(word_id) : 将查询出来的结果用逗号连接在一起
# FIND_IN_SET(word_parentId,sTempChd) 效果 == word_parentId in (1,2,3,4....) #select * from treenodes where FIND_IN_SET(id,'1,2,3,4,5'); 
#使用find_in_set函数一次返回多条记录 
#id 是一个表的字段 然后每条记录分别是id等于1,2,3,4,5的时候 
#有点类似in (集合) 
#select * from treenodes where id in (1,2,3,4,5); 
SELECT GROUP_CONCAT(word_id) INTO sTempChd FROM WordInfoEntity WHERE FIND_IN_SET(word_parentId,sTempChd); #将查询出来的子id, 再次将子id当作父id进行查询
END WHILE;
RETURN sTemp; #将最后结果返回出去
END // # 结束,必须以“//” 结束
DELIMITER ;

查询语句:

#传入父级id查询所有子级信息(function递归查询)
SELECT * FROM WordInfoEntity WHERE FIND_IN_SET(word_id, getChildLst('eeee'));

查父集合:向上递归(未亲测,未知是否能用)

--drop FUNCTION `getParentList`
CREATE FUNCTION `getParentList`(rootId varchar(100))
RETURNS varchar(1000)
BEGIN
DECLARE fid varchar(100) default '';
DECLARE str varchar(1000) default rootId; WHILE rootId is not null do
SET fid =(SELECT parentid FROM treeNodes WHERE id = 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

查询语句:

select getParentList('');   

select * from sbkfwh where FIND_IN_SET(id,getParentList(''))  

mysql自定义function 写递归查询子节点的更多相关文章

  1. MySQL递归查询父节点或递归查询子节点-陈远波

    根据id查询父节点,具体需要修改的地方笔者已在注释中给大家作了注解 DELIMITER $$ USE `yjlc_platform`$$ -- getCompanyParent 为函数名 DROP F ...

  2. oracle递归查询子节点

    通过子节点向根节点追朔. select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid 通过根节 ...

  3. 【mmall】递归查询子节点并排重

    代码 @Override public ServerResponse getSelfAndChildrenCategory(Integer categoryId) { if (categoryId ! ...

  4. MySQL递归查询树状表的子节点、父节点具体实现

    mysql版本(5.5.6等等)尚未支持循环递归查询,和sqlserver.oracle相比,mysql难于在树状表中层层遍历的子节点.本程序重点参考了下面的资料,写了两个sql存储过程,子节点查询算 ...

  5. 包含mysql 递归查询父节点 和子节点

    包含mysql 递归查询父节点 和子节点 mysql递归查询,查父集合,查子集合 查子集合 --drop FUNCTION `getChildList` CREATE FUNCTION `getChi ...

  6. MySQL递归查询树状表的子节点、父节点

    表结构和表数据就不公示了,查询的表user_role,主键是id,每条记录有parentid字段; 如下mysql查询函数即可实现根据一个节点查询所有的子节点,根据一个子节点查询所有的父节点.对于数据 ...

  7. MySQL 自定义函数CREATE FUNCTION实例

    分享一个MySQL 自定义函数CREATE FUNCTION的实例.mysql> delimiter $$mysql> CREATE FUNCTION myFunction-> (i ...

  8. mysql 自定义函数

    原文:http://www.cnblogs.com/zhangminghui/p/4113160.html 引言 MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利 ...

  9. MySQL自定义函数

    用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同. 自定义函数两个必要条件: 参数:可以有另个或多个 返回值:只能有一个 创建自定 ...

随机推荐

  1. bootstrab table+表格 select可编辑完整实例

    先看下效果图: ============================================================================================ ...

  2. Http post请求案例

    public RmiRespBase sendHttpRes(String jsonParamStr, String url, String apiName,String systemId,Strin ...

  3. Jquery选择器总结二

    简单选择器 1.:firstè选出匹配的元素中的第一个 2.:lastè选出匹配的元素中的最后一个 3.:eq(index)è选出匹配的元素中的指定索引位置的jquery对象(注:index从0开始) ...

  4. python 搜索匹配文件目录下所有的jpg或者png图片

    import glob PATH_TO_TEST_IMAGES_DIR = 'D:\TrainChangeFifteenData\Picture\Test' for pidImage in glob. ...

  5. 2019-6-23-win10-uwp-未给任务-GenerateAppxPackageRecipe-的必需参数-AppxManifestXml-赋值

    title author date CreateTime categories win10 uwp 未给任务 GenerateAppxPackageRecipe 的必需参数 AppxManifestX ...

  6. Ubuntu18.04 磁盘挂载在某目录下

    简介 记录Ubuntu18.04 桌面版系统下实现某个磁盘挂载到自己想要的目录下,内容参考网上教程,此处为自己操作记录. 查看当前所有的磁盘信息 命令:sudo fdisk -l 从列出的信息中可以看 ...

  7. .NET框架之---MEF托管可扩展框架

    MEF简介: 今天学习了下MEF框架,MEF,全称Managed Extensibility Framework(托管可扩展框架).MEF是专门致力于解决扩展性问题的框架,MSDN中对MEF有这样一段 ...

  8. Git同账号多平台配置

    最近工作中使用到了Git,虽然以前学习过,但是已经忘的差不多了,遂将本次配置过程整理成笔记以备忘 生成公钥 ssh-keygen -t rsa -C "gana10007@163.com&q ...

  9. 集训队日常训练20180518-DIV1

    A.3583 n根木棍是否能分成相等两堆. 背包dp,首先求和sum,如果为偶数就说明不行,否则考虑做一个sum/2大小的背包. #include<bits/stdc++.h> using ...

  10. 洛谷P1621 集合 [2017年6月计划 数论13]

    P1621 集合 题目描述 现在给你一些连续的整数,它们是从A到B的整数.一开始每个整数都属于各自的集合,然后你需要进行一下的操作: 每次选择两个属于不同集合的整数,如果这两个整数拥有大于等于P的公共 ...