Mysql根据某层部门ID查询所有下级多层子部门的示例

 更新时间:2020年12月30日 11:31:53   作者:Scoful  
这篇文章主要介绍了Mysql根据某层部门ID查询所有下级多层子部门的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

模拟表和数据脚本

复制以下sql语句生成一个叫sys_dept的表和插入若干构造好的有层级关系的数据,直接复制执行就ok

DROP TABLE IF EXISTS `sys_dept`;
CREATE TABLE `sys_dept` (
 `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '部门编号',
 `p_id` int(11) DEFAULT NULL COMMENT '父级部门编号',
 `title` varchar(255) DEFAULT NULL COMMENT '父级部门名称',
 `is_open` int(11) DEFAULT NULL COMMENT '是否展开(0-展开,1-不展开)',
 `address` varchar(255) DEFAULT NULL COMMENT '部门地址',
 `create_time` datetime DEFAULT NULL COMMENT '创建时间',
 `remark` varchar(255) DEFAULT NULL COMMENT '备注',
 PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO sys_dept (p_id,title,is_open,address,create_time,remark) VALUES 
(0,'总经办',1,'深圳','2019-04-10 14:06:32.000','大BOSS')
,(1,'销售部',0,'武汉','2019-04-10 14:06:32.000','程序员屌丝')
,(1,'运营部',0,'武汉','2019-04-10 14:06:32.000','无')
,(1,'生产部',0,'武汉','2019-04-10 14:06:32.000','无')
,(2,'销售一部',0,'武汉','2019-04-10 14:06:32.000','销售一部')
,(2,'销售二部',0,'武汉','2019-04-10 14:06:32.000','销售二部')
,(2,'销售三部',0,'广州','2019-04-10 14:06:32.000','销售三部')
,(2,'销售四部',0,'广州','2019-04-10 14:06:32.000','销售四部')
,(2,'销售五部',0,'广州','2019-04-10 14:06:32.000','销售五部')
,(3,'运营一部',0,'武汉','2019-04-10 14:06:32.000','运营一部')
,(3,'运营二部',0,'武汉','2019-04-10 14:06:32.000','运营二部')
,(3,'运营三部',0,'武汉','2019-04-10 14:06:32.000','运营三部')
,(3,'运营四部',0,'武汉','2019-04-10 14:06:32.000','运营四部')
,(3,'运营五部',0,'武汉','2019-04-10 14:06:32.000','运营五部')
,(4,'生产一部',1,'深圳','2019-11-23 09:50:23.000','生产一部')
,(4,'生产二部',1,'深圳','2019-11-23 09:50:23.000','生产二部')
,(4,'生产三部',1,'深圳','2019-11-23 09:50:23.000','生产三部')
,(5,'销售一部一组',1,'深圳','2019-11-23 09:50:23.000','销售一部一组')
,(5,'销售一部二组',1,'深圳','2019-11-23 09:50:23.000','销售一部二组')
,(5,'销售一部三组',1,'深圳','2019-11-23 09:50:23.000','销售一部三组')
,(6,'销售二部一组',1,'深圳','2019-11-23 09:50:23.000','销售二部一组')
,(6,'销售二部二组',1,'深圳','2019-11-23 09:50:23.000','销售二部二组')
,(17,'生产三部一组',1,'深圳','2019-11-23 09:50:23.000','生产三部一组')
,(17,'生产三部二组',1,'深圳','2019-11-23 09:50:23.000','生产三部二组')
,(17,'生产三部三组',1,'深圳','2019-11-23 09:50:23.000','生产三部三组')
;

根据部门ID查询所有子部门

select
 id,title
from
 (
 select
 t1.id,t1.title,
 if(find_in_set(p_id, @pids) > 0,
 @pids := concat(@pids, ',', id),
 0) as ischild
 from
 (
 select
  id,
  p_id,
  title
 from
  ssmdemo.sys_dept t
 order by
  p_id,
  id ) t1,
 (
  select @pids := 17) t2 ) t3
where
 ischild != 0

其中@pids := 17的17就是要查询的部门ID

到此这篇关于Mysql根据某层部门ID查询所有下级多层子部门的示例的文章就介绍到这了,更多相关Mysql ID查询所有下级多层子部门内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql in语句子查询效率慢的优化技巧示例

    mysql in语句子查询效率慢的优化技巧示例

    本文介绍主要介绍在mysql中使用in语句时,查询效率非常慢,这里分享下我的解决方法,供朋友们参考。
    2017-10-10
  • mysql数据库删除重复数据只保留一条方法实例

    mysql数据库删除重复数据只保留一条方法实例

    这篇文章主要给大家介绍了关于mysql数据库删除重复数据,只保留一条的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • MySQL的时间差函数(TIMESTAMPDIFF、DATEDIFF)、日期转换计算函数(date_add、day、date_format、str_to_date)

    MySQL的时间差函数(TIMESTAMPDIFF、DATEDIFF)、日期转换计算函数(date_add、day、da

    这篇文章主要介绍了MySQL的时间差函数(TIMESTAMPDIFF、DATEDIFF)、日期转换计算函数(date_add、day、date_format、str_to_date),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • MySQL授权命令grant的使用方法小结

    MySQL授权命令grant的使用方法小结

    这篇文章主要介绍了MySQL授权命令grant的使用方法,本文实例,运行于 MySQL 5.0 及以上版本,介绍了MySQL 赋予用户权限命令的简单格式,本文给大家介绍的非常详细,需要的朋友参考下吧
    2021-12-12
  • 解决Node.js mysql客户端不支持认证协议引发的问题

    解决Node.js mysql客户端不支持认证协议引发的问题

    这篇文章主要介绍了解决Node.js mysql客户端不支持认证协议引发的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • SQL SERVER递归查询的实现

    SQL SERVER递归查询的实现

    本文主要介绍了SQL SERVER递归查询的实现,递归查询是通过CTE来实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • MySQL学习第五天 MySQL数据库基本操作

    MySQL学习第五天 MySQL数据库基本操作

    MySQL学习第五天我们将针对MySQL数据库进行基本操作,创建、修改、删除数据库等一系列操作进行学习,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 详解MySQL like如何查询包含''%''的字段(ESCAPE用法)

    详解MySQL like如何查询包含''%''的字段(ESCAPE用法)

    这篇文章主要介绍了详解MySQL like如何查询包含'%'的字段(ESCAPE用法),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • MySQL中ESCAPE关键字的用法详解

    MySQL中ESCAPE关键字的用法详解

    这篇文章主要介绍了MySQL中ESCAPE关键字的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 详细解读MySQL中COUNT函数的用法

    详细解读MySQL中COUNT函数的用法

    这篇文章主要介绍了详细解读MySQL中COUNT函数的用法,是MySQL入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05

最新评论