在使用数据库的过程中,我们经常会遇到递归的查询。比如传入一个分类ID,要查出这个分类下的所有子分类,以及子分类的子分类。或者说传入一个部门ID,要查出这个部门下所有子部门的人员;在Oracle中我们可以使用start with…… connect by 这样的语法进行递归查询,在Sql Server中没有这样的写法,在Sql Server中要实现类似的功能,需要用到Sql Server中的CET。具体使用方法如下:

         例如现在有两张表,一张部门表,一张用户表,部门表里面有一个部门ID和一个父ID。一个部门下有多个用户,一个部门下也可以有多个子部门。现在传入一个部门ID,需要查出这个部门以及这个部门下所有子部门的用户。

WITH organaCET(OrgId,OrgName,ParentOrgId) as//定义CET

(

SELECT OrgId,OrgName,ParentOrgId FROM dept WHERE OrgId=10//查询入口,部门ID为10

UNION ALL

SELECT A.OrgId,A.OrgName, A.ParentOrgId FROM dept A,organaCET b

where A.ParentOrgId = b.OrgId//查询条件

)

select * from organaCET //使用查询结果,可以在这个上面进行其他的操作

OPTION (MAXRECURSION 3)//最大递归次数(网上看到 ,试了一下,没有效果)

         其他类似的递归查询,都可以使用这种写法。

         参考资料:

        http://www.cnblogs.com/xfrog/archive/2010/10/10/1847462.html

Sql Server 2008R2中使用CET进行递归查询的更多相关文章

  1. 【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表

    原文:[SQL Server高可用性]数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表 经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使 ...

  2. 【SQL Server高可用性】数据库复制:SQL Server 2008R2中数据库复制

    经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使用链接服务器+触发器,来实现数据同步,但当要同步的数据表比较多,那么可以考虑用数据库复制技术,来实现数据的同步. 一.使用场景 ...

  3. [转]SQL server 2008R2 中 C#Winfoirm 使用 SqlDependency 机制实现 数据库中某一张表的监视

    转自:https://blog.csdn.net/u012183487/article/details/77776930 System.Data.SqlClient命名空间下的 sqlDependen ...

  4. 启动 SQL Server 管理 Studio 在 SQL Server 2008R2 中的错误消息:"无法读取此系统上以前注册的服务器的列表" 解决方法

    问题: 服务器被人直接停掉,重启后,发现sqlserver2008r2 启动管理器报错: "无法读取此系统上以前注册的服务器的列表" 如图: 点击继续,进入后: 解决方法: 点击上 ...

  5. SQL Server 2008R2数据库文件导入到SQL Server 2008数据库中

    最近,电脑重装系统之后,安装了SQL Server 2008.附加数据库文件的时候,发现无法附加,提示版本不对.想起来,原来的数据库版本是SQL Server 2008R2.低版本的数据库管理工具无法 ...

  6. vs2012中使用localdb实例还原一个sql server 2008r2版本的数据库

    use localdb sometime is easy than sql server ,and always use visual studio make you stupid. vs2012中还 ...

  7. [原创]SQL SERVER 2008R2 技术总结专题目录索引

    前言:      在工作中使用了SQL SERVER 2008R2已经很长一段时间了,工作中自己也有个蛮好的习惯:总是喜欢将碰到的一些问题.技术方案等记录下来,现在越积越多,最近也比较轻松了,准备整理 ...

  8. Sql Server 2008R2版本中有关外键Foreign的使用

    原文:Sql Server 2008R2版本中有关外键Foreign的使用 1. 在数据库设计的过程中往往会想让2张表进行关联而使用到Foreign从而加强2张表之间的约束(如图) 以前有个问题一直没 ...

  9. SQL Server 2012中快速插入批量数据的示例及疑惑

    SQL Server 2008中SQL应用系列--目录索引 今天在做一个案例演示时,在SQL Server 2012中使用Insert语句插入1万条数据,结果遇到了一个奇怪的现象,现将过程分享出来,以 ...

随机推荐

  1. Unity3D十款最火的的插件推荐

    作为当前最主流的3D游戏引擎之中的一个.Unity拥有大量第三方插件和工具帮助开发人员提升工作效率. 我们摘选了十款最受欢迎的工具推荐给大家.类别包括2D开发.UI设计.原型制作.着色.特效等,涉及了 ...

  2. Linux_脚本——使用echo从一个文件写入还有一个文件末尾

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/svitter/article/details/30980923 echo $(cat 你须要的文件) ...

  3. BZOJ2346:[Baltic 2011]Lamp(最短路)

    Description 2255是一个傻X,他连自己家灯不亮了都不知道. 某天TZ大神路过他家,发现了这一情况, 于是TZ开始行侠仗义了. TZ发现是电路板的问题, 他打开了电路板,发现线路根本没有连 ...

  4. BZOJ4337:[BJOI2015]树的同构(树hash)

    Description 树是一种很常见的数据结构. 我们把N个点,N-1条边的连通无向图称为树. 若将某个点作为根,从根开始遍历,则其它的点都有一个前驱,这个树就成为有根树. 对于两个树T1和T2,如 ...

  5. webpack导学

    随着前端工程越来越复杂,单独建几个文件写业务代码,这样的方式已经无法保证项目的可维护性了. 所以我们就想把不同的逻辑拆成模块,然后分开引入这些模块,每个模块自己做自己的事情,这样就可以保证项目的可维护 ...

  6. Centos 7 安装Anaconda3

    1.首先下载地址: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 使用清华镜像下载速度快 2.安装 bash Anaconda3-5.1 ...

  7. tp3.2中的 I () 方法

    I('get.id'); // 相当于 $_GET['id']

  8. 2019.1.2 Spring管理事务的方式

    Spring管理事务的方式 1.编码式 1.将核心事务管理器配置到Spring容器 2.配置TransactionTemplate模版 3.将事务模版注入service 4.在Service中调用模版 ...

  9. HDU 1284 钱币兑换问题(普通型 数量无限的母函数)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1284 钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    ...

  10. Truncated class file 问题的解决

    替换class 文件之后出现了 Truncated class file  问题,查找原因,可能是文件损坏,清理缓存可以解决 解决办法: 把tomcat的work目录直接删掉,让他重新启动.rm -r ...