MySQL-公用表表达式

MySQL-公用表表达式

起男 387 2022-05-16

MySQL-公用表表达式

共用表表达式,简称为CTE(common table expressions)。cte是一个命名的结果集,作用范围是当前语句。cte可以理解成一个可以复用的子查询。和此查询的区别是:cte可以引用其他cte,但子查询不能引用其他子查询

语法

普通公用表表达式

with cte名 as (子查询) select|delete|update 语句;

普通公用表表达式类似于子查询,不过,跟子查询不同的是,它可以被多次引用,而且可以被其他的普通公用表表达式所引用

递归共用表表达式

with recursive cte名称 as(子查询) select|delete|update 语句;

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

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