部门id 父部门 部门名称
1 0 局领导
2 1 办公室
3 2 人事科
我现在想查询的是部门为1的局领导部门下的所有的子部门。我能想到的是用递归,就是先查询父部门为1的部门,可以得到部门id=2的 办公室部门,然后查询父部门id=2的部门,查询到人事科部门。
想请教下sql语句怎么写....
简单的做法是加一列部门Path,
create table #Dept(部门id int,父部门 int,部门名称 varchar(64),部门Path varchar(64))
insert into #Dept values(1,0,'局领导','0')
insert into #Dept values(2,1,'办公室','0.1')
insert into #Dept values(3,2,'人事科','0.1.2')
--查询父部门为1的所有部门
select * from #Dept where 部门Path like '0.1.%' or 部门Path ='0.1'
--查询父部门为2的所有部门
select * from #Dept where 部门Path like '0.1.2.%'or 部门Path ='0.1.2'
drop table #Dept
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。