mysql 递归查找父节点_MySQL递归查询父子节点
1.表结构
CREATE TABLE folder(
id BIGINT(20) NOT NULL,
parent_id BIGINT(20) DEFAULT NULL,
PRIMARY KEY id
);
2.根据传入id查询所有子节点及其的id
创建函数:
CREATE FUNCTION `getParList`(rootId BIGINT)
RETURNS varchar(1000)
BEGIN
DECLARE sTemp VARCHAR(1000);
DECLARE sTempPar VARCHAR(1000);
SET sTemp = '';
SET sTempPar =rootId;
#循环递归
WHILE sTempPar is not null DO
#判断是否是第一个,不加的话第一个会为空
IF sTemp != '' THEN
SET sTemp = concat(sTemp,',',sTempPar);
ELSE
SET sTemp = sTempPar;
END IF;
SET sTemp = concat(sTemp,',',sTempPar);
SELECT group_concat(parent_id) INTO sTempPar FROM folder where parent_id<>id and FIND_IN_SET(id,sTempPar)>0;
END WHILE;
RETURN sTemp;
END
调用:
select id
from folder
where FIND_IN_SET(id,getChildList(2))
3.根据传入id查询所有父节点及其的id
创建函数:
CREATE FUNCTION `getChildList`(rootId BIGINT)
RETURNS varchar(1000)
BEGIN
DECLARE sTemp VARCHAR(1000);
DECLARE sTempChd VARCHAR(1000);
SET sTemp = '$';
SET sTempChd =cast(rootId as CHAR);
WHILE sTempChd is not null DO
SET sTemp = concat(sTemp,',',sTempChd);
SELECT group_concat(id) INTO sTempChd FROM folder where FIND_IN_SET(parent_id,sTempChd)>0;
END WHILE;
RETURN sTemp;
END
调用:
select id
from folder
where FIND_IN_SET(id,getParList(10))
这是我们开启了bin-log, 我们就必须指定我们的函数是否是
1 DETERMINISTIC 不确定的
2 NO SQL 没有SQl语句,当然也不会修改数据
3 READS SQL DATA 只是读取数据,当然也不会修改数据
4 MODIFIES SQL DATA 要修改数据
5 CONTAINS SQL 包含了SQL语句
其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我们开启了 bin-log, 我们就必须为我们的function指定一个参数。
在MySQL中创建函数时出现这种错误的解决方法:
set global log_bin_trust_function_creators=TRUE;
mysql 递归查找父节点_MySQL递归查询父子节点相关推荐
- mysql递归查找父节点
参照https://blog.csdn.net/weixin_35756522/article/details/8187653 s2表结构如下: set @a=6; select @a as _id, ...
- mysql 获取根节点_mysql递归查询根节点
同时查询2张表, 查询学生所在的班级 mysql> select xing_ming,ban_ming from xue_sheng,ban_ji; 别名的使用 mysql> select ...
- mysql 递归查找父节点_MYSQL递归查询,根据子类ID查询所有父类(最全)
数据表结构 id name parent_id 1 A 0 2 B 1 3 C 1 4 D ...
- mysql 递归查找父节点_MySQL递归查询树状表的子节点、父节点具体实现
简介:mysql5.0.94版本,该版本以及较高级的版本(5.5.6等等)尚未支持循环递归查询,和sqlserver.oracle相比,mysql难于在树状表中层层遍历的子节点.本程序重点参考了下面的 ...
- mysql 递归查找父节点_MYSQL递归查询所有父节点
1.表结构:CREATE TABLE `t_busi_system` ( `ID` varchar(64) NOT NULL COMMENT '标识', `PARENT_ID` varchar(64) ...
- mysql 递归查找部门下面的所有被这个部门管理的部门(mysql 递归查找节点的所有子节点)
今天小编遇到了一个需求,需要使用mysql查询部门下面所有子部门,换句话来说就是查询节点下的所有节点,因为一直使用的是oracle,oracle有个start with .... connect by ...
- oracle递归查询指定子节点,oracle递归查询子节点
通过子节点向根节点追朔. select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid 通过根节 ...
- 节点操作之父子节点和下拉框
1.父级节点:node.parentNode node.parentNode,返回某节点的父节点,返回最近一个父节点,如果没有父节点返回null. <!-- 父级节点:node.parentNo ...
- mysql 自定义函数 递归查找父节点
1.问题描述: 现有一树形机构数据表,只有子父关系,需找到每行数据 从本节点到跟节点的路径 如: 99AA 的 path 应该为 /99AA / A000的 path 应该为 /99AA/A000/ ...
- MySQL递归查询父节点或递归查询子节点-陈远波
根据id查询父节点,具体需要修改的地方笔者已在注释中给大家作了注解 DELIMITER $$USE `yjlc_platform`$$ -- getCompanyParent 为函数名 DROP FU ...
最新文章
- 小米十年,雷军的一往无前
- Android 反编译Apk提取XML文件
- python 遍历目录_Python遍历目录的4种方法实例介绍
- JAVA的知识点4——字符型变量/常量 boolean类型变量/常量
- 练习:利用函数实现一个登陆系统
- SQLite学习手册(数据库和事务)
- 计算机二级vf笔试,计算机二级(VF)笔试120.doc
- 用etree解析xml_用python3教你任意Html主内容提取
- HarmonyOS之跨设备分布式应用调试
- 设计模式---装饰模式
- Java 12 switch表达式新特性(->,yield)
- Node-SASS安装 scss
- [LeetCode] 1. Two Sum
- 图片自适应页面大小的简单HTML代码
- 统计素数并求和python_C语言实现的统计素数并求和代码分享
- Codeforces 1071 C - Triple Flips
- Java合成图片及文字--Graphics2D
- 推荐一款牛逼的Windows神器!功能很强大!
- [Android] android 实现加速小火箭动画效果 位移+透明渐变 动画
- 前端开发基础 HTML+CSS+JS
热门文章
- mysql中exists 和 in的用法你还真不知道
- Create Table Like Mapping: 基于类型推断的建表方法
- 2016高管必看的五大互联网营销方法
- 应用chroot构建最小运行系统
- c#(asp.net/core)杂谈笔记
- Windows Workflow HOL学习笔记(七):添加一个验证来检查Email参数
- php fpm 报错,PHP-FPM安装报错解决
- 福昕pdf虚拟打印机_福昕扫描王将取代扫描仪,OCR文字识别应用办公标配
- python变量使用的三个步骤_Python 动态生成多个变量
- 提高工作效率的几个网站