公共表达式的概念
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
)
递归公共表表达式最少包含两个查询,一个为定点成员,返回有效标,另一个为递归成员,执行递归查询,直到查询结果为空或超过递归次数最大限制时,递归终止