公用表表达式简称为CTE,是一个命名的临时结果集,作用范围是当前语句,可以理解为一个可复用的子查询。可以引用其他的CTE。
普通公用表表达式:
WITH CTE名称
AS (子查询)
SELECT|DELETE|UPDATE 语句;
递归公用表表达式
递归公用表表达式是一种公用表表达式,可以在原有的基础上自己调用自己
WITH RECURSIVE CTE名称
AS (子查询)
SELECT|DELETE|UPDATE 语句;
递归公用表表达式由两部分组成,分别是种子查询和递归查询,中间通过关键字UNION [ALL]进行连接,种子查询就是获得递归的初始值,该查询只会运行一次,以创建初始数据集,之后递归查询会一直执行,直到没有任何新的查询数据产生,递归返回。