CTE
CTE(公用表达式):
可提高sql语句的可维护性,
比表变量效率高,
简化嵌套sql语句,可递归调用,
with tempTB
as
(
select * from 表
)
注意:
1.后面必须直接跟使用cte的sql语句,否责失效
2.后面也可跟其他cte,但只能使用一个with, 多个cte中间用“,”分隔
3.如果名称与某个数据表或视图重名,
紧跟在该cte后面的sql语句使用的仍是cte,
再后面跟的sql语句就是数据表或视图。
-- table1是一个实际存在的表
with
table1 as
(
select * from persons where age < 30
)
select * from table1
-- 使用了名为table1的公共表表达式
select * from table1
-- 使用了名为table1的数据表
4.cte可以引用自身,也可引用同一whit字据中 预先定义的cte
5.不能再cte中使用以下子句:
(1)COMPUTE 或 COMPUTE BY
(2)ORDER BY(除非指定了 TOP 子句)
(3)INTO
(4)带有查询提示的 OPTION 子句
(5)FOR XML
(6)FOR BROWSE
6.将cte用于批处理语句,
之前的语句必须以分号 结尾,
declare@snvarchar(3)
set@s='C%'
; --必须加分号
with
t_tree as
(
...
)
...