MYSQL8.0新特性之公用表表达式

公用表表达式(CTE)是SQL中一种临时的结果集,可用于简化复杂的查询。CTE分为普通和递归两种类型,其中递归CTE能自我引用,实现数据的递归查询。CTE相比子查询更便于复用,并且可以在一个语句中多次引用。了解CTE的使用能够提高SQL查询的效率和可读性。
摘要由CSDN通过智能技术生成

1、概述

公用表表达式(或通用表表达式)简称为CTE(Common Table Expressions)。

CTE是一个命名的临时结果集,作用范围是当前语句。

CTE可以理解成一个可以复用的子查询,当然跟子查询还是有点区别的, CTE可以引用其他CTE,但子查询不能引用其他子查询。所以,可以考虑代替子查询。

2、CTE的分类

(1)普通公用表表达式

普通公用表表达式类似于子查询,但是普通公用表表达式可以被多次引用,同时也可以被其他的公用表表达式引用。

普通公用表表达式的语法结构是:

WITH CTE名称
AS (子查询)
SELECT|DELETE|UPDATE 语句;

(2)递归公用表表达式

递归公用表表达式也是一种公用表表达式,只不过,除了普通公用表表达式的特点以外,它还有自己的 特点,就是可以调用自己。

语法结构是:

WITH RECURSIVE
CTE名称 AS (子查询)
SELECT|DELETE|UPDATE 语句;

递归公用表表达式由 2 部分组成,分别是种子查询和递归查询,中间通过关键字 UNION [ALL]进行连接。 这里的种子查询,意思就是获得递归的初始值。这个查询只会运行一次,以创建初始数据集,之后递归 查询会一直执行,直到没有任何新的查询数据产生,递归返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值