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递归查询父子节点相关推荐

  1. mysql递归查找父节点

    参照https://blog.csdn.net/weixin_35756522/article/details/8187653 s2表结构如下: set @a=6; select @a as _id, ...

  2. mysql 获取根节点_mysql递归查询根节点

    同时查询2张表, 查询学生所在的班级 mysql> select xing_ming,ban_ming from xue_sheng,ban_ji; 别名的使用 mysql> select ...

  3. mysql 递归查找父节点_MYSQL递归查询,根据子类ID查询所有父类(最全)

    数据表结构 id    name  parent_id 1        A        0 2        B        1 3        C        1 4        D   ...

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

    简介:mysql5.0.94版本,该版本以及较高级的版本(5.5.6等等)尚未支持循环递归查询,和sqlserver.oracle相比,mysql难于在树状表中层层遍历的子节点.本程序重点参考了下面的 ...

  5. mysql 递归查找父节点_MYSQL递归查询所有父节点

    1.表结构:CREATE TABLE `t_busi_system` ( `ID` varchar(64) NOT NULL COMMENT '标识', `PARENT_ID` varchar(64) ...

  6. mysql 递归查找部门下面的所有被这个部门管理的部门(mysql 递归查找节点的所有子节点)

    今天小编遇到了一个需求,需要使用mysql查询部门下面所有子部门,换句话来说就是查询节点下的所有节点,因为一直使用的是oracle,oracle有个start with .... connect by ...

  7. oracle递归查询指定子节点,oracle递归查询子节点

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

  8. 节点操作之父子节点和下拉框

    1.父级节点:node.parentNode node.parentNode,返回某节点的父节点,返回最近一个父节点,如果没有父节点返回null. <!-- 父级节点:node.parentNo ...

  9. mysql 自定义函数 递归查找父节点

    1.问题描述: 现有一树形机构数据表,只有子父关系,需找到每行数据 从本节点到跟节点的路径 如: 99AA 的 path 应该为 /99AA / A000的 path 应该为 /99AA/A000/ ...

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

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

最新文章

  1. 小米十年,雷军的一往无前
  2. Android 反编译Apk提取XML文件
  3. python 遍历目录_Python遍历目录的4种方法实例介绍
  4. JAVA的知识点4——字符型变量/常量 boolean类型变量/常量
  5. 练习:利用函数实现一个登陆系统
  6. SQLite学习手册(数据库和事务)
  7. 计算机二级vf笔试,计算机二级(VF)笔试120.doc
  8. 用etree解析xml_用python3教你任意Html主内容提取
  9. HarmonyOS之跨设备分布式应用调试
  10. 设计模式---装饰模式
  11. Java 12 switch表达式新特性(->,yield)
  12. Node-SASS安装 scss
  13. [LeetCode] 1. Two Sum
  14. 图片自适应页面大小的简单HTML代码
  15. 统计素数并求和python_C语言实现的统计素数并求和代码分享
  16. Codeforces 1071 C - Triple Flips
  17. Java合成图片及文字--Graphics2D
  18. 推荐一款牛逼的Windows神器!功能很强大!
  19. [Android] android 实现加速小火箭动画效果 位移+透明渐变 动画
  20. 前端开发基础 HTML+CSS+JS

热门文章

  1. mysql中exists 和 in的用法你还真不知道
  2. Create Table Like Mapping: 基于类型推断的建表方法
  3. 2016高管必看的五大互联网营销方法
  4. 应用chroot构建最小运行系统
  5. c#(asp.net/core)杂谈笔记
  6. Windows Workflow HOL学习笔记(七):添加一个验证来检查Email参数
  7. php fpm 报错,PHP-FPM安装报错解决
  8. 福昕pdf虚拟打印机_福昕扫描王将取代扫描仪,OCR文字识别应用办公标配
  9. python变量使用的三个步骤_Python 动态生成多个变量
  10. 提高工作效率的几个网站