mysql 树表查询所有子节点
前言
- 使用 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 树表查询所有子节点相关推荐
- Oracle树查询(查询所有子节点,父节点等等)_转载
Oracle树查询(查询所有子节点,父节点等等) 转载 2016年01月14日 10:11:55 Oracle树查询的最重要的就是select...start with... connect by . ...
- Mysql多表查询效率的研究(一)
Mysql多表查询效率的研究(一) 本文探究了mysql InnoDB引擎在多表查询的应用场景下,使用子表.内连接和左联接运行速度的差别,并且比较了索引使用与否对查询效率的影响. 第一部分简略地概括了 ...
- java mysql 多表查询_解析Mysql多表查询的实现
查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看. Mysql多表查询: CREATE TABLE IF NOT EXISTS co ...
- mysql多表查询详解_MySQL多表查询详解上
时光在不经意间,总是过得出奇的快.小暑已过,进入中暑,太阳更加热烈的绽放着ta的光芒,...在外面被太阳照顾的人们啊,你们都是勤劳与可爱的人啊.在房子里已各种姿势看我这篇这章的你,既然点了进来,那就由 ...
- mysql教程多表查询_解析Mysql多表查询的实现
查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看. Mysql多表查询: CREATE TABLE IF NOT EXISTS co ...
- 零基础带你学习MySQL—多表查询笛卡尔集(二十)
零基础带你学习MySQL-多表查询笛卡尔集(二十) 一.多表查询 多表查询:就是指基于两个和两个以上的表的查询,在实际应用中,单个表并不能满足你的需求,我们经常需要在很多个表之间查询数据 二.笛卡尔集 ...
- mysql 大表查询慢_mysql大表查询慢怎么优化?
mysql大表查询慢的优化方法:1.合理建立索引,通常查询利用到索引比不用索引更快:2.对关键字段建立水平分区,比如时间字段,若查询条件往往通过时间范围来进行查询,能提升不少性能:3.建立粗粒度数据表 ...
- mysql锁表查询和解锁操作
mysql锁表查询和解锁操作 1.在做数据库操作时,有时会因为自己的粗心或者程序设计上的缺陷导致锁表,在mysql中查看锁表和解锁的步骤如下: //1.查看当前数据库锁表的情况SELECT * FRO ...
- Mysql 多表查询详解
Mysql 多表查询详解 一.前言 二.示例 三.注意事项 一.前言 上篇讲到Mysql中关键字执行的顺序,只涉及了一张表:实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有 ...
最新文章
- java 上传的图片大小为0_JAVA技术:上传图片的缩放处理
- SAP SD交货单凭证流里的Confirmation of Service初探 II
- Javascript获取最近若干个月
- 在DataGrid(WebControl)中处理DropDownList事件的补充说明
- Eclipse导入项目常见问题----服务器版本问题02
- 洛谷——1064金明的预算方案————有依赖的背包
- 解读直播连麦与点播加密
- Vim as Python IDE on windows
- svd medium_我们刚刚放弃了Medium博客。 您可能也应该这样做。
- mxnet实战系列(一)入门与跑mnist数据集
- JavaScript in Action
- LINUX编译mate-desktop/pluma-1.24.0文本编辑器
- Spring的IOC和AOP原理
- 美通企业周刊 | 麦当劳阿里巴巴开启全域合作;老佛爷百货中国第三店落户贵阳;OPPO推出首款智能电视...
- c语言合数的分解编程,C语言 · 分解质因数
- 2017CS231n李飞飞深度视觉识别笔记(二)——图像分类
- Sleepy Cow Sorting(树状数组)
- CISCO Switchport trunk encap dot1q 与 Switchport trunk 区别
- 【报告分享】2021小红书投放运营指南书-小红书(附下载)
- 一文看懂开源许可证丨开源知识科普