- Kategorien:
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> [, ... ] ) ] ]
[ ... ]
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 vonDEFAULT
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 | +---------+-------+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);