选择 打开 改范围 完整检索页
受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10
当前 PostgreSQL 版本不在支持生命周期内。
您可以参阅当前版本的对应页面,或其他在上面列出的活跃大版本。

7.7. VALUES列表 #

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

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

每个括号括住的表达式列表都会生成表中的一行。所有列表必须具有相同数量的元素(即表中的列数),并且各列表中对应项的数据类型必须兼容。为结果中各列分配的实际数据类型,使用与UNION相同的规则确定(见Section 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';

在默认情况下,PostgreSQLcolumn1column2等名字分配给一个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_specificationORDER BYLIMIT和/或OFFSET)给它。VALUES最常见的用途是作为一个INSERT命令的数据源,以及作为一个子查询。

更多信息请见VALUES