SQL2005的cte递归查询子树

;with cte
as(
select id,caption,parentid,1 Gen from skywfflow where parentid =0
UNION ALL
select a.id,a.caption,a.parentid,cte.gen+1 Gen from skywfflow a
 inner join cte on a.parentid=cte.id
)
select * from cte

时间: 2024-10-05 14:32:45

SQL2005的cte递归查询子树的相关文章

SQL Server 2005中的CTE递归查询得到一棵树

感觉这个CTE递归查询蛮好用的,先举个例子: [c-sharp] view plain copy print ? use City; go create table Tree ( ID int identity(1,1) primary key not null, Name varchar(20) not null, Parent varchar(20) null ) go insert Tree values('大学',null) insert Tree values('学院','大学') i

今天在做后台管理系统的无刷新左侧菜单,遇到两个难题:(CTE递归查询、ashx+Session[])

今天在做后台管理系统的无刷新左侧菜单,遇到两个难题: 1.怎么将数据表中的菜单项按树形结构进行层次性的查询?群里有人给我指点说用CTE递归查询,我还没搞明白. 2.要做左侧导航栏的根据用户权限的无刷新加载时,要用到AJAX,那么就要在ashx一般处理程序中取得Session["UserID"]的值,但是ashx中是不能用Session的,之后找到一篇文章,指出:若要在ashx中使用Session和Request需要引入一个接口. 在ashx文件中使用Session和QueryStrin

SQLServer2005中的CTE递归查询得到一棵树

最近研究了一下CTE递归查询,感觉这个CTE递归查询蛮好用的,在网上找到了一个比较好的例子,测试例子如下 1 use City; 2 go 3 create table Tree 4 ( 5 ID int identity(1,1) primary key not null, 6 Name varchar(20) not null, 7 Parent varchar(20) null 8 ) 9 go 10 insert Tree values('大学',null) 11 insert Tree

SQL Server CTE 递归查询全解

在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,本文详细介绍CTE递归调用的特性和使用示例,递归查询主要用于层次结构的查询,从叶级(Leaf Level)向顶层(Root Level)查询,或从顶层向叶级查询,或递归的路径(Path). 一,递归查询原理 CTE的递归查询必须满足三个条件:初始条件,递归调用表达式,终止条件,CTE 递归查询的伪代码如下: WITH cte_name (

sql server利用cte递归查询

1.数据环境准备 参考Oracle递归查询文章. 2.查询某个节点下的所有子节点 with cte(id,name,parent_id) as ( select id,name,parent_id from SC_DISTRICT where name='巴中市' union all select sd.id,sd.name,sd.parent_id from SC_DISTRICT sd ,cte c where c.id = sd.parent_id )select * from cte r

SqlServer CTE 递归查询 Oracle递归查询

在做数据库设计这块,很多时候表的数据模型就是典型的二叉树结构. 于是在查询数据的时候,就涉及到了数据的递归查询. 递归查询分为两种:1.从根节点查询自身以及所有的子节点:2.从子节点查询自身以及所有的父节点. 下面分别以Oracle 11g 数据库和MsSql 2008 数据库为例,来实现上述两种类型的递归查询 先建一张表 表名: TAdministrative  字段名称  说明  AdministrativeID  行政编号  AdministrativePID  当前行政级别的上一行政级别

Sql Server递归查询(转)

有如下数据表 假如我们要查询ID为003的数据的所有子节点我们可以使用CTE 递归查询完成... [sql] view plaincopyprint? if OBJECT_ID('tb','N') is not null drop table tb; create table tb(id varchar(3) , pid varchar(3) , name varchar(10)); insert into tb values('001' , null , '广东省'); insert into

sql server CTE递归使用测试

--CTE递归查询 if(object_id(N'menu') > 0) drop table menu CREATE TABLE MENU ( name nvarchar(50) NOT NULL PRIMARY KEY, senior nvarchar(50) NULL ); INSERT INTO MENU values ('文件',NULL), ('新建','文件'), ('项目','新建'), ('项目11111','项目'), ('项目22222','项目'), ('项目33333'

[MSSQL2005]再看CTE

个人认为CTE最大的做点是可以处理树状存储的数据了 例如类似这样设计的数据表,ID,ParentID这样的设计使用CTE就非常方便,原因就是CTE可以自引用,达到类似递归的效果 那么问题来了,如何使用呢?   想深入学习CTE的看这里 http://www.codeproject.com/Articles/265371/Common-Table-Expressions-CTE-in-SQL-SERVER https://www.simple-talk.com/sql/t-sql-programm