- 类别:
VALUES¶
在 SELECT 语句中, FROM 子句的 VALUES 分子句允许指定一组常量来形成有限的行集。
(有关 INSERT
语句中 VALUES
子句的信息,请参阅 INSERT 语句的文档。)
语法¶
SELECT ...
FROM ( VALUES ( <expr> [ , <expr> [ , ... ] ] ) [ , ( ... ) ] ) [ [ AS ] <table_alias> [ ( <column_alias> [, ... ] ) ] ]
[ ... ]
table_alias
可以使用可选别名为行集命名,就好像行集是一个表一样。
column_alias
可选的列别名可用于为列命名。
expr
每个表达式必须是常量,或者是在 SQL 语句编译期间可以计算为常量的表达式。
大多数简单的算术表达式和字符串函数都可以在编译时计算,但大多数其他表达式不能。
使用说明¶
示例¶
VALUES 子句可用于生成一组固定的已知行:
SELECT * FROM (VALUES (1, 'one'), (2, 'two'), (3, 'three')); +---------+---------+ | COLUMN1 | COLUMN2 | |---------+---------| | 1 | one | | 2 | two | | 3 | three | +---------+---------+ SELECT column1, $2 FROM (VALUES (1, 'one'), (2, 'two'), (3, 'three')); +---------+-------+ | COLUMN1 | $2 | |---------+-------| | 1 | one | | 2 | two | | 3 | three | +---------+-------+请注意,可以通过列“名称”(隐式)或列位置来引用这些值。
如果查询使用多个 VALUES 子句,则可以使用别名来区分它们,例如:
SELECT v1.$2, v2.$2 FROM (VALUES (1, 'one'), (2, 'two')) AS v1 INNER JOIN (VALUES (1, 'One'), (3, 'three')) AS v2 WHERE v2.$1 = v1.$1;
您还可以为列名指定别名:
SELECT c1, c2 FROM (VALUES (1, 'one'), (2, 'two')) AS v1 (c1, c2);