类别:

查询语法

VALUES

在 SELECT 语句中, FROM 子句的 VALUES 分子句允许指定一组常量来形成有限的行集。

(有关 INSERT 语句中 VALUES 子句的信息,请参阅 INSERT 语句的文档。)

语法

SELECT ...
FROM ( VALUES ( <expr> [ , <expr> [ , ... ] ] ) [ , ( ... ) ] ) [ [ AS ] <table_alias> [ ( <column_alias> [, ... ] ) ] ]
[ ... ]
Copy
table_alias

可以使用可选别名为行集命名,就好像行集是一个表一样。

column_alias

可选的列别名可用于为列命名。

expr

每个表达式必须是常量,或者是在 SQL 语句编译期间可以计算为常量的表达式。

大多数简单的算术表达式和字符串函数都可以在编译时计算,但大多数其他表达式不能。

使用说明

  • FROM 子句中,VALUES 子句不能包含 DEFAULT 关键字。这与 VALUES 语句中的 INSERT 子句相反,后者支持使用 DEFAULT (例如 INSERT INTO table VALUES (10, DEFAULT, 'Name') ...)。

  • VALUES 子句限制为 16,384 行。

示例

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 |
+---------+-------+
Copy

请注意,可以通过列“名称”(隐式)或列位置来引用这些值。

如果查询使用多个 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;
Copy

您还可以为列名指定别名:

SELECT c1, c2
  FROM (VALUES (1, 'one'), (2, 'two')) AS v1 (c1, c2);
Copy
语言: 中文