你的位置:首页 > 软件开发 > 数据库 > SqlServer 递归查询树形数据

SqlServer 递归查询树形数据

发布时间:2016-01-29 17:00:10
一直没有在意过数据库处理树形数据的重要性,直到有一天朋友问起我关于树形数据查询的问题时才发现根本不会,正好这个时候也要用到递归进行树形数据的查询于是在网上查了一圈,语法总结如下参考文献:https://msdn.microsoft.com/query/dev10.query?ap ...

一直没有在意过数据库处理树形数据的重要性,直到有一天朋友问起我关于树形数据查询的问题时才发现根本不会,正好这个时候也要用到递归进行树形数据的查询于是在网上查了一圈,语法总结如下

参考文献:https://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ZH-CN&k=k(WITH_TSQL);k(SQL11.SWB.TSQLRESULTS.F1);k(SQL11.SWB.TSQLQUERY.F1);k(MISCELLANEOUSFILESPROJECT);k(DevLang-TSQL)&rd=true

 

不要把这个想的很复杂其实只要理解到了递归逻辑其实非常简单 代码如下:

-- with一个临时表(括号中是你要查询的列名)with temp(ID,PID,HandNo,Name,curLevel,pLevel)as(--1:初始查询(这里的PID=-1 在我的数据中是最底层的根节点)select ID,PID,HandNo,Name,1 as level,0 as pLevel from dbo.T_ACL_OU where Deleted = 0 and PID = -1   union all--2:递归条件select a.ID,a.PID,a.HandNo,a.Name, b.curLevel+1,b.curLevelfrom T_ACL_OU a  --3:这里的临时表和原始数据表都必须使用别名,不然递归的时候不知道查询的是那个表的列inner jointemp bon ( a.PID=b.id) --这个关联关系很重要,一定要理解一下谁是谁的父节点)select * from temp order by pLevel  --4:递归完成后 一定不要少了这句查询语句 否则会报错

原标题:SqlServer 递归查询树形数据

关键词:sql

sql
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。