1. 概述
Common Table Expression(公用表表达式),简称 CTE,由 WITH 子句中指定的简单查询派生的临时结果集,用于简化 SQL。CTE 默认是不对数据进行物化,即相当于视图,只是为一个 SQL 语句定义了一个变量,每次使用这个 SQL 语句时只需要这个 SQL 变量即可。开发过程中结合 CTE,可以提高 SQL 语句可读性,便于轻松维护复杂查询。
CTE 仅在单个语句的执行范围内定义。CTE 子句紧跟在 SELECT 或者 INSERT 关键字之前,可以在 SELECT、INSERT、CREATE TABLE AS SELECT 或者 CREATE VIEW AS SELECT 语句中使用一个或多个 CTE。
Hive 从 0.13.0 版本开始支持标准 SQL 的 CTE,具体细看使HIVE-1180。CTE 的出现可以更好地提高 SQL 语句的可读性与执行效率。
2. 语法
CTE 由表示 CTE 的表达式名称,AS 关键字以及 SELECT 语句组成。CTE 的基本语法结构如下所示:
WITH
cte_name AS