自记——SQL公共表表达式CTE

135 阅读1分钟

公共表达式的概念

CTE(common table expression):针对同一个子查询多测出现的情况,通过建立临时表,进行优化。

公共表表达式语法:

WITH expression_name [column_name [,...n]] 
AS 
(CTF_query_definition)

非递归公共表表达式

非递归公共表表达式与普通查询相同,可通过名称直接使用。

WITH expression as (
    SELECT * FROM TABLE 
)
SELECT * FROM expression

递归公共表表达式

递归公共表表达式通过在CTE中调用自身CTE实现递归。查询出10行,每行值分别为0-1。

WITH RECURSIVE sort(n) as (
    select 0 as n
    union all
    select n+1 as n where n<10
)

递归公共表表达式最少包含两个查询,一个为定点成员,返回有效标,另一个为递归成员,执行递归查询,直到查询结果为空或超过递归次数最大限制时,递归终止