向下遍历

DROP FUNCTION
IFEXISTS queryChildrenAreaInfo;DELIMITER;;
CREATE FUNCTION queryChildrenAreaInfo ( areaId INT ) RETURNS VARCHAR ( 4000 ) BEGINDECLAREsTemp VARCHAR ( 4000 );DECLAREsTempChd VARCHAR ( 4000 );SET sTemp = '';SET sTempChd = CAST( areaId AS CHAR );WHILEsTempChd IS NOT NULL DOSET sTemp = CONCAT( sTemp, ',', sTempChd );SELECTGROUP_CONCAT( dept_id ) INTO sTempChd FROMsys_dept WHEREFIND_IN_SET( parent_id, sTempChd )> 0;END WHILE;RETURN sTemp;END;;
DELIMITER;

向上遍历

DROP FUNCTION
IFEXISTS queryChildrenAreaInfo1;DELIMITER;;
CREATE FUNCTION queryChildrenAreaInfo ( areaId INT ) RETURNS VARCHAR ( 4000 ) BEGINDECLAREsTemp VARCHAR ( 4000 );DECLAREsTempChd VARCHAR ( 4000 );SET sTemp = '';SET sTempChd = CAST( areaId AS CHAR );SET sTemp = CONCAT( sTemp, ',', sTempChd );SELECTparent_id INTO sTempChd FROMsys_dept WHEREdept_id = sTempChd;WHILEsTempChd <> 0 DOSET sTemp = CONCAT( sTemp, ',', sTempChd );SELECTparent_id INTO sTempChd FROMsys_dept WHEREdept_id = sTempChd;END WHILE;RETURN sTemp;END;;DELIMITER;

调用

SELECT DISTINCTdept.dept_id AS dept_id,queryChildrenAreaInfo ( dept.dept_id ) AS area_id
FROM(SELECTsys_dept.dept_id AS dept_id,sys_dept.dept_name AS dept_name,sys_dept.parent_id AS parent_id,sys_dept.dept_name AS label FROMsys_dept
WHERE( find_in_set( sys_dept.dept_id, getChildList ( '102' )) AND sys_dept.dept_id <> '102' )) dept

查询节点ID为  '102' 部门的所有上级节点或者下级节点

表结构

DROP TABLE IF EXISTS `sys_dept`;
CREATE TABLE `sys_dept`  (`dept_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '部门id',`parent_id` bigint(20) NULL DEFAULT 0 COMMENT '父部门id',`ancestors` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '祖级列表',`dept_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '部门名称',`order_num` int(4) NULL DEFAULT 0 COMMENT '显示顺序',`leader` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '负责人',`phone` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '联系电话',`email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱',`status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '部门状态(0正常 1停用)',`del_flag` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',`create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者',`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',`update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者',`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',PRIMARY KEY (`dept_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 110 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门表' ROW_FORMAT = Dynamic;

表数据(这里用的是若依框架的表)

INSERT INTO `sys_dept` VALUES (100, 0, '0', '若依科技', 0, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2021-08-30 14:20:19', '', NULL);
INSERT INTO `sys_dept` VALUES (101, 100, '0,100', '深圳总公司', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2021-08-30 14:20:20', '', NULL);
INSERT INTO `sys_dept` VALUES (102, 100, '0,100', '长沙分公司', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2021-08-30 14:20:20', '', NULL);
INSERT INTO `sys_dept` VALUES (103, 101, '0,100,101', '研发部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2021-08-30 14:20:20', '', NULL);
INSERT INTO `sys_dept` VALUES (104, 101, '0,100,101', '市场部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2021-08-30 14:20:20', '', NULL);
INSERT INTO `sys_dept` VALUES (105, 101, '0,100,101', '测试部门', 3, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2021-08-30 14:20:20', '', NULL);
INSERT INTO `sys_dept` VALUES (106, 101, '0,100,101', '财务部门', 4, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2021-08-30 14:20:20', '', NULL);
INSERT INTO `sys_dept` VALUES (107, 101, '0,100,101', '运维部门', 5, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2021-08-30 14:20:21', '', NULL);
INSERT INTO `sys_dept` VALUES (108, 102, '0,100,102', '市场部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2021-08-30 14:20:21', '', NULL);
INSERT INTO `sys_dept` VALUES (109, 102, '0,100,102', '财务部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2021-08-30 14:20:21', '', NULL);

原文地址

MySQL中实现递归查询 - 段然涛 - 博客园

MYSQL 递归树表函数相关推荐

  1. mysql中树表和主子表是什么

    树表是指具有父子节点关系的数据表,通常用于组织数据,例如文件夹和文件的层级结构,分类目录的树状结构等.树表通常包含一个自关联的列,用于表示每个节点的父节点,可以使用递归查询实现查询子节点或所有后代节点 ...

  2. MySQL 查询树表某个根节点的子树

    select * from dept where find_in_set(id,getDeptChildList(1)) getDeptChildList 是函数,内容如下(navicat): 参数: ...

  3. mysql用户变量递归_MYSQL递归树查询的实现

    ​    在oracle中我们可以使用connect by prior 函数来实现组织树表递归的查询,但是在mysql中却没有该方法,为了能够使用该方法我们就得自己创建函数来实现该组织树的递归查询.以 ...

  4. mysql 单标递归_MYSQL递归树查询的实现

    ​    在oracle中我们可以使用connect by prior 函数来实现组织树表递归的查询,但是在mysql中却没有该方法,为了能够使用该方法我们就得自己创建函数来实现该组织树的递归查询.以 ...

  5. mysql start with connect by_MYSQL实现Oracle的Start with…Connect By递归树查询

    最近接触一个老项目,最初适配的数据库是oracle 后来迁移到mysql .这个迁移是由一个已经离职的新手做的.这个新手对于很多oracle特有的函数及存储过程都没有进行迁移.导致系统很多功能都BUG ...

  6. mysql之递归树查询

    mysql之递归树查询   写在前面   最近一段时间做的产品使用到了mysql数据库,虽然之前也使用过,但都是在业余时间使用,真正在项目中使用还是发现mysql的一些不同之处,比如函数.存储过程等, ...

  7. mysql 树表删除无效节点

    前言 mysql 5.5.40 树表 菜单树的表结构: 删除无效节点 select @parentIds := concat('0,', GROUP_CONCAT(menu_id)) from sys ...

  8. mysql 模拟序列_【原创】MySQL 模拟PostgreSQL generate_series 表函数

    PostgreSQL 提供了一个很强大的造数据的函数generate_series,基于Common Table Expression. MySQL 没有复杂的应用程序类型,该如何实现这样的功能呢? ...

  9. php 查询数据表第2条,PHP 连接 MySQL 数据库的连接函数 mysql_connect 的第二个参数是( )。...

    问题:PHP 连接 MySQL 数据库的连接函数 mysql_connect 的第二个参数是( ). 更多相关问题 下图中ACB为晨昏线,C地点位于格陵兰岛上.回答(1)--(3)题.(1)飞机从A点 ...

最新文章

  1. 在Linux上编写并运行Python文件
  2. UVA - 1415 Gauss Prime(高斯素数)
  3. 百度C2C对决淘宝的两把利器
  4. 【渝粤教育】电大中专药剂学基础知识 (2)_1作业 题库
  5. python中sticky_Python stickymeta包_程序模块 - PyPI - Python中文网
  6. OpenCL: OpenCL快速入门教程
  7. 简述主成分分析法的基本步骤_主成分分析法的原理应用及计算步骤-z.doc
  8. mysql的ndb引擎_NDB Cluster (分布式存储引擎)存储引擎简单简介及Mysql cluster的实现...
  9. jQuery动画slideUp()不正常位移原因
  10. docker虚拟化容器技术
  11. 图像分辨率+像素+尺寸+文件内存大小
  12. 华为硬件笔试 通用器件知识2_汽车智能化的起点-车规级元器件
  13. 校园招聘可以报考哪些岗位?
  14. 安装Windows 10X 教你如何安装Win10X正式版 及下载地址Win10X 20279.1002
  15. 【信号与系统】3.1系统的微分方程及其求解
  16. liteos中sem的使用
  17. 追逐日月,不苟于山川。
  18. mysql百度翻译_百度翻译与谷歌翻译哪个好,亲测给你们看
  19. win10使用NXP的opensda会出现问题,解决办法如下
  20. Go上的极简OpenGL开发笔记(一)(2020年)

热门文章

  1. 这篇文章终于把中美德三国的工业互联网讲清楚了
  2. 如何获取Certificate fingerprint (SHA1) key 以及 MD5 certification key
  3. hive表分区上传数据出现的一个问题及解决思路
  4. CVE-2021-22205 Gitlab exiftool远程命令执行 复现
  5. ElasticSearch入门教程(1)
  6. Win10忘记登录密码,系统U盘/光盘轻松重置
  7. buct编译原理个人作业
  8. java读取json文件把数据存入数据库中
  9. 小学生怎样学习英语,ProudKids少儿英语推荐几首适合学英语的三年级英语歌曲
  10. python读取单元格前几个字的值_EXCEL表格中怎么取前一单元格中的前几个字符