On this page
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';
缺省情况下,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。