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]
其他类似的递归查询,都可以使用这种写法。
参考资料:
/article/5298192.html
例如现在有两张表,一张部门表,一张用户表,部门表里面有一个部门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
相关文章推荐
- 使用SQL Server 2008进行服务器合并
- SQL SERVER 2008 R2安装的时候提示“该实例名称MSSQLSERVER已在使用
- SQL Server 2008 R2如何使用正则表达式搜索
- 一、 使用存储过程实现数据分页(Sql Server 2008 R2)
- win10使用01:安装Sql Server 2008 r2的注意事项
- sql server 2008 r2 中的oracle发布使用笔记
- 使用 SQL Server 2008 数据类型-xml 字段类型参数进行数据的批量选取或删除数据
- SQL SERVER 2008 R2 数据库日志文件太大,如何进行清理?
- 使用 VS2010 在 SQL 2008 R2 上进行应用开发
- SQL Server 2008 R2——用CTE进行递归计算求解累计值
- 使用 SQOOP 导入 SQL SERVER 2008 R2 数据出错
- 使用 VS2010 在 SQL 2008 R2 上进行应用开发 (1)
- [转]使用 VS2010 在 SQL 2008 R2 上进行应用开发
- SQL SERVER 2008中使用VARBINARY(MAX)进行图像存取的实现方法
- Win 7 装 SQL Server 2008 后使用 Asp.Net 需要进行的一些配置
- SQL Server 2008使用扩展事件进行高级故障排除