项目中有用户组表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
--查询子节点
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 ,pid from UserGroup
- ),
-
RTU2 as(
-
select * from RTU1 where id=26
-
union all
-
select RTU1.* from RTU2 inner join RTU1
-
-
on RTU2.PID=RTU1.ID
- )
-
select * from RTU2
--查询父节点
with
RTU1 as(
select id ,pid from UserGroup
),
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 行受影响)
==================================================================
--查询某一父节点的所有子节点
with
RTD1 as(
select id,name,fid from ProductType
),
RTD2 as(
select id,name,fid from RTD1 where id=10103
union all
select RTD1.* from RTD2 inner join RTD1
on RTD2.id=RTD1.FID
)
select * from RTD2
--查询某一父节点的所有子节点
with c as (
select * from producTtype where Id =10103
union all
select a.* from producTtype as a
join c on a.fid = c.Id)
select * FROM c
分享到:
相关推荐
sql server 2008 递归查询所有上级或下级数据
sqlserver递归查询树结构的表的根结点子最里层的子结点
详细描述在sqlserver 2005 中通过使用CTE 实现递归的方法
SQL Server 2005 杂谈 公用表表达式 CTE 递归调用 doc SQL Server 2005 杂谈 公用表表达式 CTE 递归调用 doc
sql查询tree树,使用的是cte 递归!
本书及其续篇——《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》介绍了SQL Server 2005中高级T-SQL查询、查询优化及编程相关的知识。这两本书侧重于解决实践中的常见问题,并讨论了解决这些问题的方法。它们...
本文实例讲述了sql server实现递归查询的方法示例。分享给大家供大家参考,具体如下: 有时候面对树结构的数据时需要进行递归查询,网上找了一番,参考了各位大神的文章,发现蛮简单的,当做个小笔记方便以后使用 sql ...
insert into dbo.hierarchy values(1,0,'河南省') ,(2,1,
递归CTE是SQL SERVER 2005中重要的增强之一。一般我们在处理树,图和层次结构的问题时需要用到递归查询...本文给大家详解使用sqlserver cte递归查询出来树、图和层次结构,本文介绍的非常详细,感兴趣的朋友一起看看吧
当初花了很长时间查资料、逛博客 终于搞定的排序 以及对于处理菜单列表显示的 问题。希望对你们有帮助。压缩包包含数据表创建脚本 以及 实现功能的语句 表结构字段 id、name、url、pid、indexs
例如,现在需要查询出西湖区以及西湖区所属的市和省,这时候就需要用到SQL递归查询。我在这里构造了一张数据表[tb_Test],其数据如下所示: Id Name ParentId 1 浙江省 NULL 2 杭州市 1 3 湖州市 1 4 滨江区 2 ...
使用SQL Server存储过程递归遍历层次结构.pdf
给定一个节点ID,查询此节点下的全部节点,并将结果集保存在临时表中
代码如下:–由父项递归下级 with cte(id,parentid,text) as (–父项 select id,parentid,text from treeview where parentid = 450 union all –递归结果集中的下级 select t.id,t.parentid,t.text from treeview as...
本文通过实例给大家介绍了sql server递归子节点、父节点sql查询表结构的实例解析,非常不错,具有参考借鉴价值,需要的的朋友参考下
想用递归sql语句把所有属于某个upperid的数据,包括它的子树,都读出去, 比如说 upperid =2 那么先找到1,3,然后再由1,3找到4,5 id upperid ----------- ----------- 1 2 3 2 4 1 5 3 6 4 upperid=2查询结果 id ...
主要介绍了SQL Server 树形表非循环递归查询的实例详解的相关资料,本文介绍的非常详细具有参考借鉴价值,需要的朋友可以参考下