各位用户为了找寻关于Mysql根据某层部门ID查询所有下级多层子部门的示例的资料费劲了很多周折。这里教程网为您整理了关于Mysql根据某层部门ID查询所有下级多层子部门的示例的相关资料,仅供查阅,以下为您介绍关于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 40DROP
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 24select
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