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 为 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
后跟表达式列表被视为等同于:
SELECTselect_list
FROMtable_expression
并且可以出现在任何 SELECT
可以出现的地方。例如,您可以将其用作 UNION
的一部分,或者为其附加一个 排序规范
(ORDER BY
、LIMIT
和/或 OFFSET
)。VALUES
最常用于 INSERT
命令中的数据源,其次是作为子查询。
有关更多信息,请参阅 VALUES。
如果您在文档中发现任何不正确、与您在使用特定功能时的体验不符或需要进一步澄清的内容,请使用 此表单 报告文档问题。