您的位置:首页 > 数据库

Sql Server 2008R2中使用CET进行递归查询

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

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

[code]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)//最大递归次数(网上看到 ,试了一下,没有效果)

[/code]

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

         参考资料:

        /article/5298192.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: