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> [, ... ] ) ] ]
[ ... ]
Tabellenalias

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

Spaltenalias

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

Ausdruck

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 Tabelle VALUES (10, DEFAULT, 'Name') ...).

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

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;

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

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