↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 → PostgreSQL devel 2026-10-03 13:37:15
受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2
开发快照PostgreSQL 20 开发快照尚未正式发布,内容与行为随时可能变化;构建于 2026-10-03。正式内容请看当前版本。

7.7. VALUES 列表 #

VALUES 提供了一种生成“常量表”的方法,这种表可以在查询中使用,而不必真的在磁盘上创建并填充一个表。语法是:

VALUES ( expression [, ...] ) [, ...]

每个用圆括号括起来的表达式列表都会生成表中的一行。各个列表必须具有相同数量的元素(即表中的列数),并且每个列表中对应位置的项必须具有兼容的数据类型。结果中每一列的实际数据类型按照与 UNION 相同的规则确定(参见第 10.5 节)。

一个示例:

VALUES (1, 'one'), (2, 'two'), (3, 'three');

将会返回一个有两列三行的表。它实际上等效于:

SELECT 1 AS column1, 'one' AS column2
UNION ALL
SELECT 2, 'two'
UNION ALL
SELECT 3, 'three';

在默认情况下,PostgreSQL 将 column1、column2 等名字分配给一个 VALUES 表的列。这些列名不是由 SQL 标准指定的,并且不同的数据库系统的做法也不同,因此通常最好使用表别名列表来重写这些默认的名字,像这样:

=> SELECT * FROM (VALUES (1, 'one'), (2, 'two'), (3, 'three')) AS t (num,letter);
 num | letter
-----+--------
   1 | one
   2 | two
   3 | three
(3 rows)

从语法上说,后面跟有表达式列表的 VALUES 列表被视为等同于

SELECT select_list FROM table_expression

并且可以出现在 SELECT 能出现的任何地方。例如,你可以把它用作 UNION 的一部分,或者附加一个 sort_specification(ORDER BY、LIMIT 和/或 OFFSET)给它。VALUES 最常见的用途是作为一个 INSERT 命令的数据源,其次常见的用途是作为子查询。

更多信息请见 VALUES。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游会在正式发布前持续修订。