Kategorien:

Abfragesyntax

VALUES

In der SELECT-Anweisung ermöglicht die Unterklausel VALUES der FROM-Klausel die Angabe einer Menge von Konstanten zur Bildung einer endlichen Menge von Zeilen.

(Informationen zur VALUES-Klausel in der INSERT-Anweisung finden Sie in der Dokumentation für die INSERT-Anweisung.)

Syntax

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

Ein optionaler Alias kann verwendet werden, um der Gruppe von Zeilen einen Namen zu geben, als wäre die Gruppe von Zeilen eine Tabelle.

column_alias

Optionale Spaltenaliasse können verwendet werden, um den Spalten Namen zu geben.

expr

Jeder Ausdruck muss eine Konstante sein oder ein Ausdruck, die bzw. der bei der Kompilierung der SQL-Anweisung als eine Konstante ausgewertet werden kann.

Die meisten einfachen arithmetischen Ausdrücke und Zeichenfolgenfunktionen können zur Kompilierungszeit ausgewertet werden, die meisten anderen Ausdrücke jedoch nicht.

Nutzungshinweise

  • In einer FROM-Klausel darf eine VALUES-Klausel nicht das Schlüsselwort DEFAULT enthalten. Dies ist anders als bei einer VALUES-Klausel in einer INSERT-Anweisung, die die Verwendung von DEFAULT unterstützt (z. B. INSERT INTO table VALUES (10, DEFAULT, 'Name') ...).

  • Die VALUES-Klausel ist auf 16.384 Zeilen begrenzt.

Beispiele

Die VALUES-Klausel hilft dabei, einen feste, bekannte Menge von Zeilen zu generieren:

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

Beachten Sie, dass die Werte entweder über die Spalte „name“ (implizit) oder über die Spaltenposition referenziert werden können.

Wenn Sie in Ihrer Abfrage mehrere VALUES-Klauseln verwenden, können Sie einen Alias verwenden, um zwischen ihnen zu unterscheiden. Beispiel:

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

Außerdem können Sie Aliasse für die Spaltennamen angeben:

SELECT c1, c2
  FROM (VALUES (1, 'one'), (2, 'two')) AS v1 (c1, c2);
Copy