You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL的CTE表达式中TABLE关键字的作用是什么?

PostgreSQL TABLE关键字用法说明

你提到的TABLE是PostgreSQL支持的标准SQL简写语法,本质是SELECT * FROM的语法糖,并非专门用于调用CTE的特殊关键字。

核心定义

TABLE 表名/CTE名 与 SELECT * FROM 表名/CTE名 的执行逻辑、返回结果完全一致,没有任何性能差异。

示例查询的工作逻辑

你给出的查询中,(TABLE max_i)可以直接等价替换为(SELECT * FROM max_i),改写后的完整语句如下:

WITH max_i AS
  ( SELECT MAX(i) FROM test )
SELECT *
FROM test
WHERE i = (SELECT * FROM max_i) - 1 ;

因为max_i这个CTE返回的是单行单列的MAX聚合结果,所以(TABLE max_i)作为标量子查询返回单个数值,可以直接参与减1的算术运算,用于匹配test表中i值为最大值减1的记录。

使用限制

  • 仅能用于查询目标的全部字段,不支持加WHERE过滤、GROUP BY聚合、ORDER BY排序等逻辑,有额外查询需求时必须写完整的SELECT语句
  • 作为子查询嵌入表达式中时,必须保证返回结果为单行单列,否则会触发运行时错误,要求和普通标量子查询完全一致

内容的提问来源于stack exchange,提问作者user2741831

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:15:04