700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > SQL 语句递归查询 With AS 查找所有子节点

SQL 语句递归查询 With AS 查找所有子节点

时间:2021-04-02 09:09:59

相关推荐

SQL 语句递归查询 With AS 查找所有子节点

SQL 语句递归查询 With AS 查找所有子节点

createtable#EnterPrise

(

Departmentnvarchar(50),--部门名称

ParentDeptnvarchar(50),--上级部门

DepartManagenvarchar(30)--部门经理

)

insertinto#EnterPriseselect'技术部','总经办','Tom'

insertinto#EnterPriseselect'商务部','总经办','Jeffry'

insertinto#EnterPriseselect'商务一部','商务部','ViVi'

insertinto#EnterPriseselect'商务二部','商务部','Peter'

insertinto#EnterPriseselect'程序组','技术部','GiGi'

insertinto#EnterPriseselect'设计组','技术部','yoyo'

insertinto#EnterPriseselect'专项组','程序组','Yue'

insertinto#EnterPriseselect'总经办','','Boss'

--查询部门经理是Tom的下面的部门名称

;withhgoas

(

select*,0asrankfrom#EnterPrisewhereDepartManage='Tom'

unionall

selecth.*,h1.rank+1from#EnterPrise hjoinhgo h1onh.ParentDept=h1.Department

)

select*fromhgo

/*

Department ParentDept DepartManage rank

--------------- -------------------- ----------------------- -----------

技术部 总经办 Tom 0

程序组 技术部 GiGi 1

设计组 技术部 yoyo 1

专项组 程序组 Yue 2

*/

--查询部门经理是GiGi的上级部门名称

;withhgoas

(

select*,0asrankfrom#EnterPrisewhereDepartManage='GiGi'

unionall

selecth.*,h1.rank+1from#EnterPrise hjoinhgo h1onh.Department=h1.ParentDept

)

select*fromhgo

/*

Department ParentDept DepartManage rank

-------------------- ---------------------- ----------- -----------

程序组 技术部 GiGi 0

技术部 总经办 Tom 1

总经办 Boss 2

*/

如果递归次数大于100,只需在与cte连接的sql 语句的最后加上option (maxrecursion 0) 即可.默认递归

次数为100,设为0表示没有次数限制.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。