mysql自定义function 写递归查询子节点
#存储文本信息表
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 写递归查询子节点的更多相关文章
- MySQL递归查询父节点或递归查询子节点-陈远波
根据id查询父节点,具体需要修改的地方笔者已在注释中给大家作了注解 DELIMITER $$ USE `yjlc_platform`$$ -- getCompanyParent 为函数名 DROP F ...
- oracle递归查询子节点
通过子节点向根节点追朔. select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid 通过根节 ...
- 【mmall】递归查询子节点并排重
代码 @Override public ServerResponse getSelfAndChildrenCategory(Integer categoryId) { if (categoryId ! ...
- MySQL递归查询树状表的子节点、父节点具体实现
mysql版本(5.5.6等等)尚未支持循环递归查询,和sqlserver.oracle相比,mysql难于在树状表中层层遍历的子节点.本程序重点参考了下面的资料,写了两个sql存储过程,子节点查询算 ...
- 包含mysql 递归查询父节点 和子节点
包含mysql 递归查询父节点 和子节点 mysql递归查询,查父集合,查子集合 查子集合 --drop FUNCTION `getChildList` CREATE FUNCTION `getChi ...
- MySQL递归查询树状表的子节点、父节点
表结构和表数据就不公示了,查询的表user_role,主键是id,每条记录有parentid字段; 如下mysql查询函数即可实现根据一个节点查询所有的子节点,根据一个子节点查询所有的父节点.对于数据 ...
- MySQL 自定义函数CREATE FUNCTION实例
分享一个MySQL 自定义函数CREATE FUNCTION的实例.mysql> delimiter $$mysql> CREATE FUNCTION myFunction-> (i ...
- mysql 自定义函数
原文:http://www.cnblogs.com/zhangminghui/p/4113160.html 引言 MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利 ...
- MySQL自定义函数
用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同. 自定义函数两个必要条件: 参数:可以有另个或多个 返回值:只能有一个 创建自定 ...
随机推荐
- jqurey相册放大浏览效果。
/*图片弹窗与切换*/ function honorLayer(){ var honorArray = honorArr(); var $msk = $('.js-mask'),$layer = $( ...
- 创建一个欢迎 cookie 利用用户在提示框中输入的数据创建一个 JavaScript Cookie,当该用户再次访问该页面时,根据 cookie 中的信息发出欢迎信息。
创建一个欢迎 cookie 利用用户在提示框中输入的数据创建一个 JavaScript Cookie,当该用户再次访问该页面时,根据 cookie 中的信息发出欢迎信息. <html> & ...
- PAT甲级——A1011 World Cup Betting
With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excite ...
- TZOJ 5962 Happy Matt Friends(计数DP)
描述 Matt hzs N friends. They are playing a game together. Each of Matt’s friends has a magic number. ...
- istio1.1(openshift) 流量路由
1.准备测试应用 准备两个nginx Pod和一个proxy 创建应用 apiVersion: apps.openshift.io/v1 kind: DeploymentConfig metadata ...
- hdu6243
hdu6243结论题,每个的概率是(n-1)/n,然后乘以总数n,结果就是 n-1 #include<iostream> #include<cstdio> #include&l ...
- Django项目:CRM(客户关系管理系统)--32--24PerfectCRM实现King_admin自定义操作数据
#admin.py # ————————01PerfectCRM基本配置ADMIN———————— from django.contrib import admin # Register your m ...
- 直接在安装了redis的Linux机器上操作redis数据存储类型--对key的操作
一.概述: 前几篇博客中,主要讲述的是与Redis数据类型相关的命令,如String.List.Set.Hashes和Sorted-Set.这些命令都具有一个共同点,即所有的操作都是针对与Key关 ...
- img标签下多余空白BUG解决方法
在进行页面的DIV CSS排版时,遇到IE6(当然有时Firefox下也会偶遇)浏览器中的图片元素img下出现多余空白的问题绝对是常见的 对于该问题的解决方法也是“见机行事”. 1.将图片转换为块级对 ...
- Spring事务_注解_特性
Spring 是一个 IOC 和 AOP 容器框架. ## 控制反转(IOC) ## 传统的 java 开发模式中,当需要一个对象时,我们会自己使用 new 或者 getInstance 等直接或者间 ...