QyonJ

下一秒的阳光会不会更灿烂
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
   (
     ...
   )
   ...

 

posted on 2017-03-10 09:04  QyonJ  阅读(239)  评论(0编辑  收藏  举报