with as 子查询与with recursive as 递归

with as 子查询

( CTE语句 )语法

CTE的结构包括名称,可选列列表和定义CTE的查询。CTE定义后,您可以使用它像一个视图SELECT,INSERT,UPDATE,DELETE,或CREATE VIEW语句。

with  cte_name [ column_list]  as (
 	cte_query_definition  
)
[ SELECT| INSERT | UPDATE | DELETE]

理解 :
cte_query_definition : 是 select语句 ;
cte_name :是 cte_query_definition 查询语句的名称;
可以把 with as() 当成一个视图,cte_name 是视图名,cte_query_definition 是视图查询语句。

【注意】with as () 后面必须跟着 [ SELECT| INSERT | UPDATE | DELETE] 语句,否则报错。

with recursive as 递归

WITH recursive  cte_name  AS ( 
	初始语句(非递归部分) 
	UNION ALL 
	递归部分语句
)
[ SELECT| INSERT | UPDATE | DELETE]

理解 :
初始语句 :就是第一次给 cte_name ( 相当于 视图名 或 表名 )
递归部分语句 :当 cte_name 的值 发生改变时,就会执行 此递归语句;而 此递归语句会把 其执行> 结果重新赋值给 cte_name,直到达到此递归语句的结束条件 。

cte_name 每一次的重新赋值,都会使 with recursive AS( )后面的 [ SELECT| INSERT | UPDATE > | DELETE] 语句执行一次。
而最终结果就是 多次 [ SELECT| INSERT | UPDATE | DELETE] 语句执行结果的合集。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值