在 PostgreSQL 中,WITH 关键字用于创建一个临时的命名查询,也被称为"common table expression"(通用表表达式)。WITH 语句可以用于简化复杂查询,提高查询的可读性和可维护性。
WITH 语句的基本语法如下:
WITH <expression_name> AS (
<subquery>
)
SELECT <columns>
FROM <expression_name>;
其中,<expression_name>
是表达式的名称,<subquery>
是一个子查询,<columns>
是要查询的列,可以是 <expression_name>
中的列或者其他表中的列。
WITH 语句可以包含多个表达式,每个表达式之间使用逗号分隔,例如:
WITH
cte1 AS (
SELECT * FROM table1
),
cte2 AS (
SELECT * FROM table2
)
SELECT *
FROM cte1
JOIN cte2 ON cte1.id = cte2.id;
在实际使用中,WITH 语句可以用于创建递归查询、多层嵌套查询、子查询共享等复杂查询场景。