Postgresql 中文操作指南
7.7. VALUES Lists #
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';
默认情况下,PostgreSQL 为 VALUES 表的列分配 column1、column2 等名称。列名并非由 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 。