SqlServer 中 类似于Oracle里面的递归查询方法,connect by prior ,start with。
use test
set nocount on
if object_id('Dept','U') is not null
drop table Dept
go
create table Dept(ID int,ParentID int,Name varchar(20))
insert into Dept select 1,0,'AA'
insert into Dept select 2,1,'BB'
insert into Dept select 3,1,'CC'
insert into Dept select 4,2,'DD'
insert into Dept select 5,3,'EE'
insert into Dept select 6,0,'FF'
insert into Dept select 7,6,'GG'
insert into Dept select 8,7,'HH'
insert into Dept select 9,7,'II'
insert into Dept select 10,7,'JJ'
insert into Dept select 11,9,'KK'
go
SELECT * FROM Dept;
--查询树状结构某节点的上级所有根节点。
with cte_root(ID,ParentID,NAME)
as
(
--起始条件
select ID,ParentID,NAME
from Dept
where Name = 'II' --列出子节点查询条件
union all
--递归条件
select a.ID,a.ParentID,a.NAME
from Dept a
inner join
cte_root b --执行递归,这里就要理解下了
on a.ID=b.ParentID --根据基础表条件查询子节点(a.ID),通过CTE递归找到其父节点(b.ParentID)。
) --可以和下面查询子节点的cte_child对比。
select * from cte_root ;
--查询树状结构某节点下的所有子节点。
with cte_child(ID,ParentID,NAME)
as
(
--起始条件
select ID,ParentID,NAME
from Dept
where Name = 'II' --列出父节点查询条件
union all
--递归条件
select a.ID,a.ParentID,a.NAME
from Dept a
inner join
cte_child b
on ( a.ParentID=b.ID) --根据查询到的父节点(a.Parent),通过CTE递归查询出其子节点(b.ID)
)
select * from cte_child --可以改变之前的查询条件'II'再测试结果
相关推荐
Oracle start with.connect by prior子句实现递归查询
主要给大家介绍了关于Oracle递归查询start with connect by prior、的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
在 Oracle 中是通过 start with connect by prior 语法来实现递归查询的。 按照 prior 关键字在子节点端还是父节点端,以及是否包含当前查询的节点,共分为四种情况。 prior 在子节点端(向下递归) 第一种情况: ...
oracle中 connect by prior 递归算法 Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的
sql server 2008 递归查询所有上级或下级数据
Oracle使用递归查询。查询树结构的sql。在Oracle中,递归查询要用到start with ……connect by prior……
sqlserver递归查询树结构的表的根结点子最里层的子结点
Oracle使用递归SQL展示一棵树
oracle 递归调用 地区 ,用到的方法是 SYS_CONNECT_BY_PATH,可以扩展层级 名称
oracle 如何递归查询父子关系。经常用于构造树结构
详细描述在sqlserver 2005 中通过使用CTE 实现递归的方法
sql 2005中用CTE实现递归的很好很易懂很基础的例子讲解。
递归查询菜单树,支持mysql,oracle,含表结构,递归查询菜单,支持mysql,oracle,含表结构递归查询菜单。
oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的。这篇文章给大家介绍了Oracle递归树形结构查询功能,需要的朋友参考下
本文实例讲述了sql server实现递归查询的方法示例。分享给大家供大家参考,具体如下: 有时候面对树结构的数据时需要进行递归查询,网上找了一番,参考了各位大神的文章,发现蛮简单的,当做个小笔记方便以后使用 sql ...
oracle递归查询
oracle递归查询的例子,一个从创建表到查询的完整的例子。oralce递归查询是一个很实用的语句,在sqlserver目前还没有,但是语法常常不容易被我们记住,所以本人总结了一下,写到文档里了。
☆ 获取数据库所有表名,表的...SqlServer2005和Oracle 两个版本以前使用Oracle,觉得它的递归查询很好用,就研究了一下SqlServer,发现它也支持在Sql里递归查询举例说明:SqlServer2005版本的Sql如下:比如一个表,有i
-- 用SQL Server显示树结构, 不用递归算法,不用游标,没有层次限制, 速度很快 -- 显示、打印用起来很方便的 -- select * from Dept -- select * from dbo.GetDeptTree('00000000-0000-0000-0000-000000000000') ...