CTE学习
来源:互联网 发布:mac 全角半角 编辑:程序博客网 时间:2024/05/16 03:41
http://tech.ddvip.com/2009-02/1233645923106990.html
递归CTE是SQL SERVER 2005中重要的增强之一。一般我们在处理树,图和层次结构的问题时需要用到递归查询。
CTE的语法如下
1 WITH CTE AS
2 (
3 SELECT EmpId, ReportTo, FName FROM Employ WHERE EmpId=1
4 UNION ALL
5 SELECT emp.EmpId, emp.ReportTo, emp.FName FROM CTE JOIN Employ as emp ON CTE.EmpId=emp.ReportTo
6 )
2 (
3 SELECT EmpId, ReportTo, FName FROM Employ WHERE EmpId=1
4 UNION ALL
5 SELECT emp.EmpId, emp.ReportTo, emp.FName FROM CTE JOIN Employ as emp ON CTE.EmpId=emp.ReportTo
6 )
递归CTE最少包含两个查询(也被称为成员)。第一个查询为定点成员,定点成员只是一个返回有效表的查询,用于递归的基础或定位点。第二个查询被称为递归成员,使该查询称为递归成员的是对CTE名称的递归引用是触发。在逻辑上可以将CTE名称的内部应用理解为前一个查询的结果集。
递归查询没有显式的递归终止条件,只有当第二个递归查询返回空结果集或是超出了递归次数的最大限制时才停止递归。是指递归次数上限的方法是使用MAXRECURION。
1 USE AdventureWorks;
2 GO
3 --Creates an infinite loop
4 WITH cte (EmployeeID, ManagerID, Title) as
5 (
6 SELECT EmployeeID, ManagerID, Title
7 FROM HumanResources.Employee
8 WHERE ManagerID IS NOT NULL
9 UNION ALL
10 SELECT cte.EmployeeID, cte.ManagerID, cte.Title
11 FROM cte
12 JOIN HumanResources.Employee AS e
13 ON cte.ManagerID = e.EmployeeID
14 )
15 --Uses MAXRECURSION to limit the recursive levels to 2
16 SELECT EmployeeID, ManagerID, Title
17 FROM cte
18 OPTION (MAXRECURSION 2);
19 GO
2 GO
3 --Creates an infinite loop
4 WITH cte (EmployeeID, ManagerID, Title) as
5 (
6 SELECT EmployeeID, ManagerID, Title
7 FROM HumanResources.Employee
8 WHERE ManagerID IS NOT NULL
9 UNION ALL
10 SELECT cte.EmployeeID, cte.ManagerID, cte.Title
11 FROM cte
12 JOIN HumanResources.Employee AS e
13 ON cte.ManagerID = e.EmployeeID
14 )
15 --Uses MAXRECURSION to limit the recursive levels to 2
16 SELECT EmployeeID, ManagerID, Title
17 FROM cte
18 OPTION (MAXRECURSION 2);
19 GO
- CTE学习
- SQL CTE学习总结
- CTE~
- CTE
- CTE
- SQL2005学习笔记-公用表表达式(CTE)
- SQL2005学习笔记-公用表表达式(CTE)
- SQL Server 2005 T-SQL学习笔记:CTE
- With (CTE、递归CTE)
- CTE好文两篇
- CTE递归
- CTE查询
- sql cte
- oracle CTE
- CTE 递归
- 关于SQLServer2005的学习笔记——CTE递归和模拟测试数据
- 关于SQLServer2005的学习笔记——临时表、表变量和CTE
- Sql Server2005 Transact-SQL 新兵器学习总结之-公用表表达式(CTE)
- MS sql两个不同数据库之间 进行数据倒换
- 用 按钮实现 IFRAME的跳转
- 国内PHP开源建站程序一览
- 动态库中创建对话框
- 顺手记点LINUX命令
- CTE学习
- Reuse-Based Software Engineering : Techniques, Organization, and controls
- 一个C#数组中 特殊项的选取
- 初步完成了两个网站
- 错误:"类文件具有错误的版本 50.0,应为 49.0"的解决
- ORA-12545:因目标主机或对象不存在,连接失败的解决办法
- 如何解决局域网中Windows防火墙不能访问Oracle问题!
- [转]使用Javascript动态创建表格,不同的方法,巨大的运行时间差异!
- 排序之一、直接插入排序