项目中有用户组表UserGroup如下:
其中PID表示当前组的上级组
表数据如下:
现在想查询出顶级组[没有上级组叫顶级组]A1组的所有子孙组ID,sql如下:
--查询子节点with RTD1 as( select ID,pID from UserGroup ),RTD2 as( select * from RTD1 where ID=6 union all select RTD1.* from RTD2 inner join RTD1 on RTD2.ID=RTD1.PID )select * from RTD2
查询结果如下:
ID pID
----------- -----------
6 NulL
17 6
18 6
20 6
21 20
22 20
23 20
24 20
29 20
25 23
26 23
28 26
27 25
(13 行受影响)
现在想查询出A1-B3-C3-D2组的所有上级组ID,sql如下:
--查询父节点with RTU1 as( select ID,RTU2 as( select * from RTU1 where ID=26 union all select RTU1.* from RTU2 inner join RTU1 --on myT2.ID=myT.PID on RTU2.PID=RTU1.ID )select * from RTU2
查询结果如下:
ID pID
----------- -----------
26 23
23 20
20 6
6 NulL
(4 行受影响)
总结以上是内存溢出为你收集整理的SQLSERVER 2005 递归查询全部内容,希望文章能够帮你解决SQLSERVER 2005 递归查询所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)