2024 年 9 月 26 日: PostgreSQL 17 发布!
支持的版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不受支持的版本:11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2

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 会将 column1column2 等名称分配给 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 BYLIMIT 和/或 OFFSET) 附加到它。 VALUES 最常用于 INSERT 命令中的数据源,其次是子查询。

有关更多信息,请参阅VALUES

提交更正

如果您在文档中发现任何不正确的内容,与您对特定功能的体验不符,或者需要进一步说明,请使用此表格 报告文档问题。