公用表表达式和派生表类似的另一种形式的表表达式,CTE中是先定义表,然后再引用,结构比较清晰
CTE相比派生表的优势:如果有多个子查询,不需要像派生表那样嵌套,只需要在WITH中定义多个CTE,每个CTE可以引用它前面定义的所有CTE
派生表:from子句中的子查询。
select * from (select 1,2,3) tb(c1,c2,c3) --c1、c2、c3是列别名
CTE:
with
tb(c1,c2,c3) as (select 1,2,3) select * from tb
多个CTE:
with tb1(c1,c2,c3) as (select 1,2,3), tb2(c1,c2,c3) as (select * from tb1) select * from tb2