• SQL中的CTE,查询所有的子集(子集的子集)比游标效率高


    今天闲来无事,就说说Sqlserver中CTE的用法

    其实CTE我更多的可以把他当作是一种临时表,他方便你进行循环性的操作。但是他比临时表使用起来要方便一些:首先我们举个例子:要查询一个栏目表 但是这个栏目表的数据库设计的时候使用的这样的一个结构

    id   M_name  parentID

    1    name_1    0
    2    name_2    1
    3    name_3    2
    4    name_4    3
    5    name_5    4

    如果我需要查询一个栏目的下面的所有的子栏目,你会怎么做呢?建一个一个临时表,然后把第一条数据放进去然后游标对临时表进行遍历操作,然后把遍历到的数据插入到里面(这个时候,他会继续进行遍历新插入的数据的)。首先我说这个的方法是可取的但是效率是非常低下的。在SQL2005以后就有了CTE这样的一个概念,他对此类操作非常的简单,代码如下:

    with myCte as
    (
    select * from myTt where id=2
    union all
    select myTt.* from  myTt
        inner join myCte on  myTt.parentid=myCte.id
    )
    select *from myCte

    查询数据如下:

    id   M_name  parentID

    2    name_2    1
    3    name_3    2
    4    name_4    3
    5    name_5    4

    查询ID为2的所有的子栏目。从这里我们可以看到他的代码量非常的简化,对于内部操作有没有使用游标这些我还没有深入研究过,希望有晓得的人能跟我联系:QQ:982147279

  • 相关阅读:
    javascript中错误使用var造成undefined
    眼下流行的几种排课算法的介绍
    UVA 11212 IDA*
    Delphi 2007体验!
    全局钩子具体解释
    客户信用控制请求
    【2012.1.24更新】不要再在网上搜索eclipse的汉化包了!
    Android URI简单介绍
    数据结构
    关于 Head First SQL 中文版
  • 原文地址:https://www.cnblogs.com/dingdingmao/p/3146534.html
Copyright © 2020-2023  润新知