开发者社区> 问答> 正文

sql语句关于查询上下级部门的问题

部门id 父部门 部门名称
1 0 局领导
2 1 办公室
3 2 人事科

我现在想查询的是部门为1的局领导部门下的所有的子部门。我能想到的是用递归,就是先查询父部门为1的部门,可以得到部门id=2的 办公室部门,然后查询父部门id=2的部门,查询到人事科部门。

想请教下sql语句怎么写....

展开
收起
a123456678 2016-07-04 15:05:18 3492 0
2 条回答
写回答
取消 提交回答
  • 用子查询不就可以了吗?

    2019-07-17 19:50:42
    赞同 展开评论 打赏
  • 简单的做法是加一列部门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
    2019-07-17 19:50:42
    赞同 展开评论 打赏
问答分类:
SQL
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载