公用表表达式CTE是Sql Server 2005引入的一种新的表表达式。CTE在许多方面都类似于派生表。逻辑上CTE是一个临时结果集,它仅仅存在于它发生的语句中。您可以在SELECT、INSERT、DELETE、UPDATE或CTEATE VIEW语句中建立一个CTE。

CTE的优点

与派生表不同,CTE能够引用自己本身。如果您不必存储视图,您可以用一个CTE来代替它。在一个语句中,您还可以多次引用CTE。应用CTE,您可以通过一个派生栏对结果进行分组。CTE可以将查询区域分割成可读的“块”,然后用这些块建立一个复杂的查询。

创建CTE

WITH CTE_name[ (column_name [,...n] ) ]

AS

( CTE_query_specification )

Outer_query_using_Cte;

注意CTE和外部的查询语句之间不能使用分号;

例如:

代码

WITH cte_Employee
AS
(
SELECTe.EmployeeID, c.FirstName, c.MiddleName, c.LastName,
e.Title AS JobTitle, c.Phone, e.ManagerID
FROMHumanResources.EmployeeAS e 
INNER JOIN Person.ContactAS c ON c.ContactID = e.ContactID
)
SELECT * FROM cte_Employee;

多CTE

CTE不能被直接嵌套。但是可以在同一个WITH语句中定于多个CTE,每个CTE可以应用前面的CTE。外部查询可以访问到所有的CTE。利用这一功能可以简化复杂的嵌套查询。

WITH cte1 as
(
    ....
)
cte2 as
(
    SELECT * FROM cte1
)
SELECT * FROM cte2

多引用

即你可以再外部查询中多次引用同一个CTE名称。不必像派生表那样重复定义相同的查询。

转载于:https://www.cnblogs.com/hyl8218/archive/2009/12/23/1630448.html

在Sql Server 2005使用公用表表达式CTE简化复杂的查询语句相关推荐

  1. SQL Server中公用表表达式 CTE 递归的生成帮助数据,以及递归的典型应用

    原文: SQL Server中公用表表达式 CTE 递归的生成帮助数据,以及递归的典型应用 本文出处:http://www.cnblogs.com/wy123/p/5960825.html 我们在做开 ...

  2. T-SQL查询进阶--详解公用表表达式(CTE)

    简介 对于SELECT查询语句来说,通常情况下,为了使T-SQL代码更加简洁和可读,在一个查询中引用另外的结果集都是通过视图而不是子查询来进行分解的.但是,视图是作为系统对象存在数据库中,那对于结果集 ...

  3. 详解公用表表达式(CTE)

    简介 对于SELECT查询语句来说,通常情况下,为了使T-SQL代码更加简洁和可读,在一个查询中引用另外的结果集都是通过视图而不是子查询来进行分解的.但是,视图是作为系统对象存在数据库中,那对于结果集 ...

  4. 公用表表达式(CTE)WITH:树型查询、更新

    转自http://msdn.microsoft.com/zh-cn/library/ms175972(SQL.100).aspx 指定临时命名的结果集,这些结果集称为公用表表达式 (CTE). 语法: ...

  5. mysql cte 语法,mysql8 公用表表达式CTE的使用方法实例分析

    本文实例讲述了mysql8 公用表表达式cte的使用方法.分享给大家供大家参考,具体如下: 公用表表达式cte就是命名的临时结果集,作用范围是当前语句. 说白点你可以理解成一个可以复用的子查询,当然跟 ...

  6. cte mysql_mysql8 公用表表达式CTE的使用

    公用表表达式CTE就是命名的临时结果集,作用范围是当前语句. 说白点你可以理解成一个可以复用的子查询,当然跟子查询还是有点区别的,CTE可以引用其他CTE,但子查询不能引用其他子查询. 一.cte的语 ...

  7. mysql cte_mysql8 公用表表达式CTE的使用方法实例分析

    本文实例讲述了mysql8 公用表表达式CTE的使用方法.分享给大家供大家参考,具体如下: 公用表表达式CTE就是命名的临时结果集,作用范围是当前语句. 说白点你可以理解成一个可以复用的子查询,当然跟 ...

  8. 在SQL Server 2005中实现表的行列转换()

    PIVOT和UNPIVOT关系运算符是SQL Server 2005提供的新增功能,因此,对升级到SQL Server 2005的数据库使用PIVOT和UNPIVOT时,数据库的兼容级别必须设置为90 ...

  9. SQL Server 2005 术语词汇表

    术语 定义 ActiveX 数据对象 (ActiveX Data Objects) 一种易于使用的应用程序编程接口 (API),用于封装 OLE DB 以在诸如 Visual Basic.Visual ...

最新文章

  1. 从0到1,苏宁API网关的演进之路
  2. 设计模式是用来弥补面向对象编程缺陷的方法总结
  3. vue 路由传参 params 与 query两种方式的区别
  4. String课后作业
  5. 2010年年度 “中国智能建筑品牌奖”获奖名单
  6. ILSpy反编译软件的使用
  7. 中国数据中心改造市场趋势报告、技术动态创新及市场预测
  8. 计算机专业电脑内存,电脑内存大小是否和速度有关?
  9. 介绍一个java的Excel处理工具
  10. 机器学习_深度学习毕设题目汇总——语音
  11. [wayfarer]PetShop数据访问层之消息处理
  12. 什么是 Hive ?
  13. table后台数据渲染,不满n条时tr补全
  14. linux 进程调度 内存,linux学习的任督二脉-进程调度和内存管理
  15. 马伯骞、法老助力,realme真我5G旗舰发布
  16. cadence SPB17.4 - allegro - 出装配图
  17. 3D打印切片软件--cura的二次开发
  18. 用fopen写入一个文件
  19. OBIEE分析开发-使用Echarts展现地图1
  20. 保洁阿姨看完都会了!了解Android架构组件后,构建APP超简单!赶紧收藏!

热门文章

  1. Python运算符优先级
  2. 总结css中单位px和em,rem的区别
  3. 软件工程导论课程主页 :12-13-2
  4. layui中table监听单元格_最全总结 | 聊聊 Python 办公自动化之 PPT(中)
  5. 统考计算机应用基础多少分及格,网络教育统考难吗?统考多少分及格?
  6. 腾讯地图 marker 从地图上清空
  7. Jmeter使用流程及简单分析监控
  8. C# CSV文件读取(带换行单元格中内容处理)
  9. 如何在excel不同的工作表之间使用数据有效性?
  10. POST请求传入中文参数,接收端乱码