sql server笔记

公用表表达式(Common Table Expression)是SQL SERVER 中的一个特性.CTE可以看作是一个临时的结果集,可以在接下来的一个SELECT,INSERT,UPDATE,DELETE,MERGE语句中被多次引用。使用公用表达式可以让语句更加清晰简练.
按照是否递归,可以将公用表(CTE)表达式分为递归公用表表达式和非递归公用表表达式.

with as 的递归用法

with cte_child(deptid,pdeptid,deptname,level)
as
(
         select
            CAST(-1 as decimal(19)) as deptid,
            CAST( 0 as decimal(19))  as pdeptid,
            CAST( '董事会' as varchar(100)) as deptname,
			0 as level
    union all
			 select
            d.deptid,
            d.pdeptid ,
            d.deptname,
			b.level+1 
            from pcmc_dept d
            -- 从上往下递归,递归部分不允许使用外部联接(不允许使用left join等)
            inner join  cte_child b on ( d.pdeptid=b.deptid) 
            --  inner join  cte_child b on ( b.pdeptid=d.deptid)  从下往上递归
            where d.DISABLE=0			
)
select 
deptid deptId,
pdeptid pdeptId,
deptname deptName,
level
from cte_child  -- CTE后面必须直接跟使用CTE的SQL语句(如select、insert、update等),否则,CTE将失效。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值