前言

  • 使用 find_in_set 函数可以实现该功能

表结构

  • 假设有部门表如下:
CREATE TABLE IF NOT EXISTS `sys_dept` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '部门id',`parent_id` bigint(20) DEFAULT '0' COMMENT '父部门id',`ancestors` varchar(50) DEFAULT '' COMMENT '祖级列表',`name` varchar(30) DEFAULT '' COMMENT '部门名称',`order_num` int(4) DEFAULT '0' COMMENT '显示顺序',`leader` varchar(20) DEFAULT NULL COMMENT '负责人',`phone` varchar(11) DEFAULT NULL COMMENT '联系电话',`email` varchar(50) DEFAULT NULL COMMENT '邮箱',`status` char(1) DEFAULT '0' COMMENT '部门状态(0正常 1停用)',`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',`create_userid` bigint(20)  DEFAULT NULL COMMENT '创建者,user表id',`create_username` varchar(64) DEFAULT '' COMMENT '创建者,user表name,冗余',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_userid` bigint(20)  DEFAULT NULL COMMENT '更新者,user表id',`update_username` varchar(64) DEFAULT '' COMMENT '更新者,user表name,冗余',`update_time` datetime DEFAULT NULL COMMENT '更新时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='部门表' AUTO_INCREMENT=105 ;

数据示例

INSERT INTO `sys_dept`
(`id`, `parent_id`, `ancestors`, `name`, `order_num`, `leader`, `phone`, `email`, `status`, `del_flag`)
VALUES
(100, 0, '0', 'xx公司', 0, '张三', '15888888888', 'xxx@xx.com', '0', '0'),
(101, 100, '0,100', '财务部', 1, NULL, NULL, NULL, '0', '0'),
(102, 100, '0,100', '办公室', 2, NULL, NULL, NULL, '0', '0'),
(103, 100, '0,100', '销售1部', 3, NULL, NULL, NULL, '0', '0'),
(104, 103, '0,100,103', '销售1部1科', 1, NULL, NULL, NULL, '0', '0');

查询id=100的部门的所有子部门

select *
from `sys_dept`
where FIND_IN_SET('100',ancestors)

运行结果

查询id=103的部门的子部门

select *
from `sys_dept`
where FIND_IN_SET('103',ancestors)

运行结果

参考

https://www.cnblogs.com/xiaoxi/p/5889486.html

mysql 树表查询所有子节点相关推荐

  1. Oracle树查询(查询所有子节点,父节点等等)_转载

    Oracle树查询(查询所有子节点,父节点等等) 转载 2016年01月14日 10:11:55 Oracle树查询的最重要的就是select...start with... connect by . ...

  2. Mysql多表查询效率的研究(一)

    Mysql多表查询效率的研究(一) 本文探究了mysql InnoDB引擎在多表查询的应用场景下,使用子表.内连接和左联接运行速度的差别,并且比较了索引使用与否对查询效率的影响. 第一部分简略地概括了 ...

  3. java mysql 多表查询_解析Mysql多表查询的实现

    查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看. Mysql多表查询: CREATE TABLE IF NOT EXISTS co ...

  4. mysql多表查询详解_MySQL多表查询详解上

    时光在不经意间,总是过得出奇的快.小暑已过,进入中暑,太阳更加热烈的绽放着ta的光芒,...在外面被太阳照顾的人们啊,你们都是勤劳与可爱的人啊.在房子里已各种姿势看我这篇这章的你,既然点了进来,那就由 ...

  5. mysql教程多表查询_解析Mysql多表查询的实现

    查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看. Mysql多表查询: CREATE TABLE IF NOT EXISTS co ...

  6. 零基础带你学习MySQL—多表查询笛卡尔集(二十)

    零基础带你学习MySQL-多表查询笛卡尔集(二十) 一.多表查询 多表查询:就是指基于两个和两个以上的表的查询,在实际应用中,单个表并不能满足你的需求,我们经常需要在很多个表之间查询数据 二.笛卡尔集 ...

  7. mysql 大表查询慢_mysql大表查询慢怎么优化?

    mysql大表查询慢的优化方法:1.合理建立索引,通常查询利用到索引比不用索引更快:2.对关键字段建立水平分区,比如时间字段,若查询条件往往通过时间范围来进行查询,能提升不少性能:3.建立粗粒度数据表 ...

  8. mysql锁表查询和解锁操作

    mysql锁表查询和解锁操作 1.在做数据库操作时,有时会因为自己的粗心或者程序设计上的缺陷导致锁表,在mysql中查看锁表和解锁的步骤如下: //1.查看当前数据库锁表的情况SELECT * FRO ...

  9. Mysql 多表查询详解

    Mysql 多表查询详解 一.前言  二.示例 三.注意事项 一.前言  上篇讲到Mysql中关键字执行的顺序,只涉及了一张表:实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有 ...

最新文章

  1. java 上传的图片大小为0_JAVA技术:上传图片的缩放处理
  2. SAP SD交货单凭证流里的Confirmation of Service初探 II
  3. Javascript获取最近若干个月
  4. 在DataGrid(WebControl)中处理DropDownList事件的补充说明
  5. Eclipse导入项目常见问题----服务器版本问题02
  6. 洛谷——1064金明的预算方案————有依赖的背包
  7. 解读直播连麦与点播加密
  8. Vim as Python IDE on windows
  9. svd medium_我们刚刚放弃了Medium博客。 您可能也应该这样做。
  10. mxnet实战系列(一)入门与跑mnist数据集
  11. JavaScript in Action
  12. LINUX编译mate-desktop/pluma-1.24.0文本编辑器
  13. Spring的IOC和AOP原理
  14. 美通企业周刊 | 麦当劳阿里巴巴开启全域合作;老佛爷百货中国第三店落户贵阳;OPPO推出首款智能电视...
  15. c语言合数的分解编程,C语言 · 分解质因数
  16. 2017CS231n李飞飞深度视觉识别笔记(二)——图像分类
  17. Sleepy Cow Sorting(树状数组)
  18. CISCO Switchport trunk encap dot1q 与 Switchport trunk 区别
  19. 【报告分享】2021小红书投放运营指南书-小红书(附下载)
  20. 一文看懂开源许可证丨开源知识科普

热门文章

  1. 数据采集之用户区域(USER)事件
  2. Windows Azure Storage (4) Windows Azure Storage Service存储服务之Blob Share Access Signature
  3. Dreamweaver PHP代码护眼配色方案
  4. Redis安装及主从配置
  5. 对于Activity的理解
  6. hmlt ul li 水平排列
  7. C#PDF转Word
  8. springMvc的一些简介 和基于xml的handlerMapping基本流程
  9. 十分钟玩转 jQuery、实例大全
  10. JavaScript slice() 方法