我先简单介绍一下CTE(Common Table Expression)是什么,然后简要介绍下用法和注意事项
什么是CTE:Common Table Expression:是Sql2005推出的语法,类似内置临时表,创建后自动消亡,在cte中可以进行递归查询等操作
cte可以看作临时表,但是它的生命周期仅存在于访问每一次的TSQL批处理语法中,而一般临时对象的生命周期与连接同在
一、生命周期
注意CTE和临时表有个重要的区别,就是生存周期,那么CTE的生存周期到底有多久呢,我们看下面的语句
--从帖子表中选出前30条放入一个叫CTE_Temp的临时表
withCTE_TempAS(
SelectTop(30)*FromTopics
)
--从CTE_temp中查出所有记录(第一次),没有问题,返回30条记录
select*fromCTE_Temp
--从CTE_Temp中查询(第二次),报错,提示cte_temp对象不存在
select*fromCTE_Temp
紧跟在with语句后面的第一条语句是有效果的,执行第二条前对象就消亡了,也就是说cte的存在周期是with语句的下一条语句,所以,cte不能替代临时表,但是适用于那种只用一次的临时表的场合,在这种情况下,使用cte不会造成日志文件的增大,也不需要手工销毁临时表
二、使用冒号分割
使用cte还有一个地方需要注意,如果在存储过程或者语句中,cte不是一个这个批处理的第一条语句,那么前一条语句必须要以冒号“;”结尾,如下
declare@aint
set@a=5
--从帖子表中选出前30条放入一个叫CTE_Temp的临时表
withCTE_TempAS(
SelectTop(30)*FromTopics
)
这时执行报错:Incorrect syntax near the keyword 'with'. If this statement is a common table expression or an xmlnamespaces clause, the previous statement must be terminated with a semicolon.
如果你在set @a=5后面加一个;那么就可以顺利执行了,
三、使用限制
with语句下一定要有语句,并且一定要是select,update,delete,insert语句,如果没有语句会报:Incorrect syntax near ')'.但是如果你的with语句下跟了一个比如set 语句,如下
--从帖子表中选出前30条放入一个叫CTE_Temp的临时表
withCTE_TempAS(
SelectTop(30)*FromTopics
)
declare@aint
set@a=5
会报告Incorrect syntax near the keyword 'declare'.
分享到:
相关推荐
很好的实验报告思路,内含报告模板,常见故障点,考试流程及注意事项
主要介绍了mysql8 公用表表达式CTE的使用方法,结合实例形式分析了mysql8 公用表表达式CTE的基本功能、原理使用方法及相关操作注意事项,需要的朋友可以参考下
公用表表达式(CTE)具有一个重要的优点,那就是能够引用其自身,从而创建递归 CTE接下来详细介绍下:CTE 的基本语法结构,在使用CTE时注意事项以及实例操作
3.7 通用表表达式(CTE) 3.8 递归查询 3.9 合并 3.10 利用外部调用完成复杂操作 3.11 性能考虑 3.12 小结 第4章 XML集成 4.1 XML数据类型 4.2 提取XML格式的关系数据 4.3 有关XML索引的...
3.7 通用表表达式(CTE) 3.8 递归查询 3.9 合并 3.10 利用外部调用完成复杂操作 3.11 性能考虑 3.12 小结 第4章 XML集成 4.1 XML数据类型 4.2 提取XML格式的关系数据 4.3 有关XML索引的...
3.7 通用表表达式(CTE) 3.8 递归查询 3.9 合并 3.10 利用外部调用完成复杂操作 3.11 性能考虑 3.12 小结 第4章 XML集成 4.1 XML数据类型 4.2 提取XML格式的关系数据 4.3 有关XML索引的...
3.7 通用表表达式(CTE) 3.8 递归查询 3.9 合并 3.10 利用外部调用完成复杂操作 3.11 性能考虑 3.12 小结 第4章 XML集成 4.1 XML数据类型 4.2 提取XML格式的关系数据 4.3 有关XML索引的...
3.7 通用表表达式(CTE) 3.8 递归查询 3.9 合并 3.10 利用外部调用完成复杂操作 3.11 性能考虑 3.12 小结 第4章 XML集成 4.1 XML数据类型 4.2 提取XML格式的关系数据 4.3 有关XML索引的...
3.7 通用表表达式(CTE) 3.8 递归查询 3.9 合并 3.10 利用外部调用完成复杂操作 3.11 性能考虑 3.12 小结 第4章 XML集成 4.1 XML数据类型 4.2 提取XML格式的关系数据 4.3 有关XML索引的...
练习注意事项 力扣 SQL # 标题 解决方案 困难 标签 0175 简单的 0176 简单的 0177 / 中等的 窗函数,设置 0178 中等的 0180 / 中等的 连接,窗口函数 0181 简单的 0182 / 简单的 通过...分组 0183 简单的 0184 中等...
团队编译器项目Languaje Team ++#1月“ 5-11”周: 1带有标记的词典的定义2语法定义及其图表3创建github仓库第1周“ 12月16日”: 1以图表形式回顾以上内容2语法复习3添加语法4使语法适合吉森5语义注意事项表1对图...