SQL中的CTE,查询所有的子集(子集的子集)比游标效率高
来源:互联网 发布:java中md5加密和解密 编辑:程序博客网 时间:2024/05/16 06:10
今天闲来无事,就说说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
- SQL中的CTE,查询所有的子集(子集的子集)比游标效率高
- 所有子集的和
- Set Difference(所有子集的最值差)
- 打印集合所有的子集
- 穷举所有子集的算法
- 求集合的所有子集
- 打印集合的所有子集
- 一个集合的所有子集
- 求集合的所有子集
- 打印字符串所有的子集
- 求解数组的所有子集
- 数字n的所有子集
- 输出集合的所有子集
- Subsets 数组的所有子集
- 求集合的所有子集
- 求数组的所有子集
- 求列表的所有子集
- Leetcode031--集合的所有子集
- java 数据类型
- du,df,fdisk,mkfs.ext3命令详解
- asp.net url 重写
- Thinking About "Unable to handle kernel paging request at virtual address ffc05000"
- This is a test for living ...
- SQL中的CTE,查询所有的子集(子集的子集)比游标效率高
- U-boot源码简要分析(二)
- 课表
- 我的tmux配置
- 泛型算法
- packet tracer5.0
- Java多线程技术中所有方法的详细解析
- WinCE下自定义的大软键盘
- 获得JDK的安装目录以及jconsole观察cpu与内存信息