zoukankan      html  css  js  c++  java
  • 在Sql Server 2005使用公用表表达式CTE简化复杂的查询语句

    公用表表达式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名称。不必像派生表那样重复定义相同的查询。

  • 相关阅读:
    server-conf-PPTConf
    client-autoReport-ppt
    client-autoReport-common
    浏览器书签导出
    微信公众号JSAPI支付-多公众号向同一商户号支付的问题解决
    Kettle 4.4.0 通过 Java 代码 输出日志到表
    spring tx:advice事务配置
    Spring异常捕获而且回滚事务的方法
    移动端服务器i-jetty下载编译安装及问题解决系列
    I-Jetty部署war包到安卓手机
  • 原文地址:https://www.cnblogs.com/hyl8218/p/1630448.html
Copyright © 2011-2022 走看看