CTE 递归举例


 1
 2--递归CTE
 3
 4Use tempdb
 5Go
 6
 7Create Table Dept(
 8    Id Int primary key,
 9    Parent_Id int,
10    [name] nvarchar(50)
11)
12
13Insert Dept
14Select 0,0,N'<All>' Union All
15Select 1,0,N'财务部' Union All
16Select 2,0,N'行政部' Union All
17Select 3,0,N'业务部' Union All
18Select 4,3,N'软件开发' Union All
19Select 5,3,N'软件测试' 
20Go
21
22--查询所有部门
23Declare @DeptName nvarchar(50)
24Set @DeptName = '业务部'
25
26;With
27CTE_Depts as
28(
29    --定位点成员
30    Select * From Dept
31    Where [name]=@DeptName
32    Union All
33    Select A.* 
34    From Dept A,CTE_Depts B
35    Where A.Parent_Id = B.Id
36)
37
38Select * From CTE_Depts

欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/archive/2009/03/22/1418756.html

时间: 2024-10-30 04:14:03

CTE 递归举例的相关文章

sqlserver 用CTE 递归 排序问题 求大神指教啊

问题描述 sqlserver 用CTE 递归 排序问题 求大神指教啊 create table t_manage (f_gener int,f_accounts varchar(100) null, f_firstGener varchar(100) null, f_secondGener varchar(100) null, f_thirdGener varchar(100) null, f_joindate datetime null ) select * from dbo.t_manage

递归解决斐波那契数列

1.什么是递归? 递归:递归是方法定义调用方法本身的现象.递归举例如下: <span style="font-size:14px;">public class DiGuiDemo { //递归方法举例 public void show() { show(); } } </span> 2.递归的注意事项? (1)递归一定要有出口.否则就会死递归. 上面举例用的递归就是一个死递归,方法永远都在进行自身调用,最终一定会陷入内存崩溃.所以递归要定义出口,就是结束递归的条

SQL2008使用CTE递归查询批量插入500万数据

原文 http://www.cnblogs.com/wjmo520/archive/2013/04/27/3046795.html 一直都使用一般的批量循环插入方法 ,可这效率也太慢了,插入500万条数据执行所需的时间远远超过10分钟.于是度娘了一下 发现可以使用CTE进行递归循环插入 以下是亲测的数据: 1.创建表: CREATE TABLE Customers (CustomerID INT primary key identity(1,1), CustomerNumber CHAR(4),

Sql学习第三天——SQL 关于CTE(公用表达式)的递归查询使用_MsSql

关于使用CTE(公用表表达式)的递归查询----SQL Server 2005及以上版本 公用表表达式 (CTE) 具有一个重要的优点,那就是能够引用其自身,从而创建递归 CTE.递归 CTE 是一个重复执行初始 CTE 以返回数据子集直到获取完整结果集的公用表表达式. 当某个查询引用递归 CTE 时,它即被称为递归查询.递归查询通常用于返回分层数据,例如:显示某个组织图中的雇员或物料清单方案(其中父级产品有一个或多个组件,而那些组件可能还有子组件,或者是其他父级产品的组件)中的数据. 递归 C

使用SqlServer CTE递归查询处理树、图和层次结构_MsSql

CTE(Common Table Expressions)是从SQL Server 2005以后版本才有的.指定的临时命名结果集,这些结果集称为CTE. 与派生表类似,不存储为对象,并且只在查询期间有效.与派生表的不同之处在于,CTE 可自引用,还可在同一查询中引用多次.使用CTE能改善代码可读性,且不损害其性能. 递归CTE是SQL SERVER 2005中重要的增强之一.一般我们在处理树,图和层次结构的问题时需要用到递归查询. CTE的语法如下 WITH CTE AS ( SELECT Em

在sqlserver中如何使用CTE解决复杂查询问题_MsSql

最近,同事需要从数个表中查询用户的业务和报告数据,写了一个SQL语句,查询比较慢: Select S.Name, S.AccountantCode, ( Select COUNT(*) from ( Select Distinct BusinessBackupId from Biz_BusinessBackupCustomer where Id in ( Select BusinessBackupCustomerId from Rpt_RegistForm where ( SignatureCP

SQL 笔记 By 华仔

-------------------------------------读书笔记------------------------------- 笔记1-徐 最常用的几种备份方法 笔记2-徐 收缩数据库的大小的方法 笔记3-徐 设置数据库自动增长注意要点 笔记4-徐 模仿灾难发生时还原adventurework数据库 示例 stopat 笔记5-徐 检查日志文件不能被截断的原因 笔记6-徐 检测孤立用户并恢复孤立用户到新的服务器 解决数据库镜像孤立用户问题 笔记7-徐 SQLSERVER日志记录

SQL Server 2005使用关系数据库存储CFG

本文介绍的是用关系数据库来存储CFG(控制流程图)的信息.在查询时,为了得到所有dominate关系的结果,使用了CTE来进行递归查询. 本文介绍的是用关系数据库来存储CFG(控制流程图)的信息.在查询时,为了得到所有dominate关系的结果,使用了CTE来进行递归查询. 简单例子如下: 1. 现有表testRe结构如下 2. 欲得到的查询结果为找到id='a'的项的所有pId,即b.c.d. 3. 使用CTE做递归查询: WITH Re_CTE(id, pId, Level) Technor

SQL递归查询(SqlServer/ORACLE递归查询)[语法差异分析]

在 SQLSERVER2005以后,mssql开始有了递归查询的方法了.比较起最开始写存储过程或者写function的方式.这样的方式更加简便灵活的. 而oracle也有自带的树形结构递归查询方法,connect by 下面我自己写的一段SQL,简单注释下CTE共用表达式的一些用法. 实现对树状结构的根节点和子节点的查询. 代码 -------------------------------------------------------------------------- author:jc