xingd.net

.net related techonology

导航

Common Table Expression

Posted on 2006-04-08 18:40  xingd  阅读(1609)  评论(2编辑  收藏  举报
SQL Server 2005中的T-SQL有了一系列的扩展,本文介绍Common Table Expression(CTE)。
 
在编写复杂的T-SQL语句或存储过程时,经常需要在现有表的结构之上进行数据的重组,以获取最终的结果。常用的方式有:
  • JOIN 用于查询时多表的链接。
  • UNION 查询结果的合并
  • 子查询 将一个查询的结果参与的另一个查询,支持IN, EXIST等用法。
  • 临时表 有局部临时表和全局临时表两种。

此外,T-SQL中还有一些较复杂的用法:

  • APPLY 用于函数返回的表结构,有CROSS APPLY和OUTER APPLY两种用法
  • PIVOT和UNPIVOT 用于行列数据的转置
  • CTE Common Table Expression 参见下文的介绍

CTE用于创建一个自定义的表结构,用法示例如下:

WITH Table(Column1, Column2, ...) AS

(

SELECT * from Table1

)

SELECT * FROM TABLE

 

非常简单的一个例子,这其实只是一条T-SQL命令。通过WITH ... AS (...),创建了一个自定义结构的数据表,其内容由AS之后的SELECT来构建。

 

不同于临时表,CTE并不占用tempdb空间,其生命期也仅位于当时的查询中。CTE据有临时表和子查询所不具备的一些特点,为T-SQL程序员提供了子查询,临时表之外的一个工具。