ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 7.7\. `VALUES`列表 可以在查询中使用由`VALUES`生成的"常数表", 而无需在磁盘上实际创建这个表。语法如下: ``` VALUES ( _expression_ [, ...] ) [, ...] ``` 每个括号中的表达式列表生成表中的一行。每个列表中的项数(也就是字段数)必须相等, 并且对应的数据类型必须兼容。最终表中每个字段的数据类型将使用与`UNION` (参见[Section 10.5](#calibre_link-454))相同的规则确定。 例如: ``` 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](#calibre_link-106)。