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将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列表被视为等同于
SELECTselect_listFROMtable_expression
一样,并且可以出现在SELECT能出现的任何地方。例如,你可以把它用作UNION的一部分,或者附加一个sort_specification(ORDER BY、LIMIT和/或OFFSET)给它。VALUES最常见的用途是作为一个INSERT命令的数据源,以及作为一个子查询。
更多信息请见VALUES。
如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。