简介html
对于SELECT查询语句来讲,一般状况下,为了使T-SQL代码更加简洁和可读,在一个查询中引用另外的结果集都是经过视图而不是子查询来进行分解的。可是,视图是做为系统对象存在数据库中,那对于结果集仅仅须要在存储过程或是用户自定义函数中使用一次的时候,使用视图就显得有些奢侈了。数据库
公用表表达式(Common Table Expression)是SQL SERVER 2005版本以后引入的一个特性。CTE能够看做是一个临时的结果集,能够在接下来的一个SELECT,INSERT,UPDATE,DELETE,MERGE语句中被屡次引用。使用公用表达式能够让语句更加清晰简练。函数
除此以外,根据微软对CTE好处的描述,能够归结为四点:spa
定义.net
公用表表达式(CTE),是一个在查询中定义的临时命名结果集将在from子句中使用它。每一个CTE仅被定义一次(但在其做用域内能够被引用任意次),而且在该查询生存期间将一直生存。能够使用CTE来执行递归操做。code
包含三部分:htm
建立的语法是:对象
with <name of you cte>(<column names>) as( <actual query> ) select * from <name of your cte>
编辑推荐blog
SQL Server2005杂谈(1):使用公用表表达式(CTE)简化嵌套SQL递归