カテゴリ:

クエリ構文

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 キーワードを含めることはできません。これは、 DEFAULT (例: INSERT INTO table VALUES (10, DEFAULT, 'Name') ...)の使用をサポートする INSERT ステートメントの VALUES 句とは対照的です。

  • 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