登录
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。