当前位置:数据库 > > 正文

查询按照部门分组的mysql语句(Mysql根据某层部门ID查询所有下级多层子部门的示例)

时间:2022-01-16 00:36:09类别:数据库

查询按照部门分组的mysql语句

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

模拟表和数据脚本

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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 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查询所有子部门

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 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查询所有下级多层子部门内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!

    原文链接:https://blog.csdn.net/Scoful/article/details/106441476

    标签:
    上一篇下一篇

    猜您喜欢

    热门推荐