VALUES列表

PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 章 7. 查询 | 下一页

# 7.7. `VALUES`列表

可以在查询中使用由`VALUES`生成的"常数表"， 而无需在磁盘上实际创建这个表。语法如下：

    VALUES ( expression [, ...] ) [, ...]

每个括号中的表达式列表生成表中的一行。每个列表中的项数(也就是字段数)必须相等， 并且对应的数据类型必须兼容。最终表中每个字段的数据类型将使用与`UNION` (参见第 10.5 节)相同的规则确定。

例如:

    VALUES (1, 'one'), (2, 'two'), (3, 'three');

将得到 2 列 3 行的表。并且与下面的语句等价：

    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。

上一页 | 起始页 | 下一页
`LIMIT`和`OFFSET` | 上一级 | `WITH` 查询 (通用表表达式)