公用表表达式(Common Table Expressions,简称 CTE)是一种在 SQL 中临时定义结果集的方法,可以在一个查询内多次引用。CTE 使得复杂查询更易于阅读和维护。CTE(common table expression)可定义多个, 按书写顺序,支持后面的 CTE 的query_definition 中引用前面定义的 CTE。Expression_name 可以与数据库中的基础表或者视图名称相同,主查询引用 expression_name 标识符的地方,都是指 CTE,而不是数据库中的基础表或者视图,若没有书写库名将优先引用定义的 CTE,若书写了库名.表名,如 test.t1 将引用基础表或视图。
CTE 的语法结构如下:
WITH cte_name AS (
-- CTE 的查询
SELECT column1, column2, ...
FROM table_name
WHERE condition
)
-- 使用 CTE 的主查询
SELECT * FROM cte_name;
CTE 的优点
可读性:通过将复杂的查询拆分为逻辑上更简单的部分,CTE 提高了 SQL 查询的可读性。
可重用性:可以在单个查询中多次引用 CTE,从而避免重复代码。