公用表表达式 Common Table Expression

基本写法

WITH expression_name[(column_name [,...])]
AS
    (CTE_definition)

SQL_statement;

 

定义多个CTE写法

WITH cte_1[(column_name [,...])]
AS
    (cte_1_definition),

cte_2

    (cte_2_definition),

cte_2

    (cte_3_definition),

SQL_statement;

语法:

1、公用表表达式的名字(在WITH之后),提供后续调用,有且只能调用一次

2、所涉及的列名(可选)

3、 一个SELECT语句(紧跟AS之后)

4、With之前如果有SQL语句,需要用分号隔开(;)

 

非递归用法

目的:可以在接下来一条语句中多次引用:

用法:非递归公用表表达式(CTE)的使用方式和视图以及子查询一致

with cte
AS(SELECT * FROM T_SomeTable)

select * from cte a inner join cte b
on a.SomeColumn= b.SomeColumn

 

递归用法

(基本语句、递归语句)

With recursive_CTE  

AS (  

SELECT p1.* FROM T_SomeTable p1      

where p1.SomeColumn = 'XXXXX'                   --递归初始条码                  

UNION ALL  

SELECT p2.* FROM T_SomeTable p2  

INNER JOIN recursive_CTE   

on recursive_CTE.SomeColumn = p2.SomeColumn    -- 递归条码

)  

Select * From recursive_CTE                        --执行表达式,获取值

限制递归次数

Select * From recursive_CTE
OPTION ( MAXRECURSION 2)            — 限制最大递归次数为2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值