- Kategorien:
FROM¶
Gibt die Tabellen, Ansichten oder Tabellenfunktionen an, die in einer SELECT-Anweisung verwendet werden sollen.
- Siehe auch:
AT | BEFORE, CHANGES, CONNECT BY, JOIN, ASOF JOIN, MATCH_RECOGNIZE, PIVOT, SAMPLE / TABLESAMPLE, UNPIVOT, Verwenden von Verknüpfungen (Joins), Verknüpfen von Zeitreihendaten
Syntax¶
SELECT ...
FROM objectReference [ JOIN objectReference [ ... ] ]
[ ... ]
Wobei:
objectReference ::= { [<namespace>.]<object_name> [ AT | BEFORE ( <object_state> ) ] [ CHANGES ( <change_tracking_type> ) ] [ MATCH_RECOGNIZE ] [ PIVOT | UNPIVOT ] [ [ AS ] <alias_name> ] [ SAMPLE ] | <table_function> [ PIVOT | UNPIVOT ] [ [ AS ] <alias_name> ] [ SAMPLE ] | ( VALUES (...) ) [ SAMPLE ] | [ LATERAL ] ( <subquery> ) [ [ AS ] <alias_name> ] | @[<namespace>.]<stage_name>[/<path>] [ ( FILE_FORMAT => <format_name>, PATTERN => '<regex_pattern>' ) ] [ [AS] <alias_name> ] | DIRECTORY( @<stage_name> ) }
JOIN
Unterklausel, mit der angegeben wird, dass eine Verknüpfung zwischen zwei oder mehr Tabellen (oder Ansichten oder Tabellenfunktionen) ausgeführt werden soll. Die Verknüpfung kann eine innere Verknüpfung, eine äußere Verknüpfung oder ein anderer Typ von Verknüpfung sein. Die Verknüpfung kann das Schlüsselwort JOIN oder eine alternative unterstützte Verknüpfungssyntax verwenden. Weitere Informationen zu Verknüpfungen finden Sie unter JOIN und ASOF JOIN.
[ AS ] alias_name
Gibt einen Namen für den Objektverweis an, mit dem sie verknüpft ist. Kann mit allen anderen Unterklauseln in der FROM-Klausel verwendet werden.
Aliasnamen müssen den Regeln für Objektbezeichner folgen.
VALUES
Die
VALUES
-Klausel kann literale Werte oder Ausdrücke angeben, die in derFROM
-Klausel verwendet werden sollen. Diese Klausel kann Tabellen- und Spaltenaliasse enthalten (nicht im obigen Diagramm dargestellt). Weitere Informationen zur VALUES-Klausel finden Sie unter VALUES.
Objekt- oder Tabellenfunktionsklausel¶
[namespace.]object_name
Gibt den Namen des Objekts (Tabelle oder Ansicht) an, das abgefragt werden soll.
Der Objektname kann mit
namespace
(in Form vondb_name.schema_name.object_name
oderschema_name.object_name
) qualifiziert werden. Ein Namespace ist nicht erforderlich, wenn der Kontext aus der aktuellen Datenbank und dem aktuellen Schema der Sitzung abgeleitet werden kann.Bei Angabe eines abzufragenden Tabellen-/Ansichtsnamens können Sie auch die folgende optionale Unterklausel angeben:
AT | BEFORE ( object_state )
Optionale Unterklausel, die den zeit- oder ereignisbasierten Verlaufsstatus der Tabelle oder Ansicht für Time Travel angibt. Weitere Details dazu finden Sie unter AT | BEFORE.
MATCH_RECOGNIZE
Optionale Unterklausel zum Suchen von Sequenzen von Zeilen, die mit einem Muster übereinstimmen. Weitere Details dazu finden Sie unter MATCH_RECOGNIZE.
table_function
Gibt entweder eine systemdefinierte oder eine UDF-Tabellenfunktion an, die in der FROM-Klausel aufgerufen werden soll. Weitere Details dazu finden Sie unter Tabellenfunktionen oder Übersicht zu benutzerdefinierten Funktionen.
PIVOT | UNPIVOT
Optionale Unterklausel, die angibt, ob die Ergebnisse der FROM-Klausel pivotiert oder entpivotiert werden sollen. Weitere Details dazu finden Sie unter PIVOT und UNPIVOT.
SAMPLE
Optionale Unterklausel, die angibt, ob Stichproben für Zeilen aus der Tabelle/Ansicht gezogen werden sollen. Weitere Details dazu finden Sie unter SAMPLE / TABLESAMPLE.
Inlineansichtsklausel¶
[ LATERAL ] ( subquery )
Gibt eine Inlineansicht innerhalb der FROM-Klausel an. Wenn das optionale Schlüsselwort
LATERAL
verwendet wird, kann diesubquery
auf Spalten aus anderen Tabellen (oder Ansichten oder Tabellenfunktionen) in der aktuellen FROM-Klausel auf der linken Seite der Inlineansicht verweisen.Weitere allgemeine Informationen zum Clustering finden Sie unter Verwenden von Unterabfragen.
Klausel für Stagingdateien¶
@[namespace.]stage_name[/path]
Gibt einen benannten Stagingbereich an, der abgefragt werden soll (oder
~
, um auf den Stagingbereich des aktuellen Benutzers zu verweisen, oder%
, gefolgt von einem Tabellennamen, um auf den Stagingbereich der angegebenen Tabelle zu verweisen).Bei Abfrage eines Stagingbereichs können Sie optional auch ein benanntes Dateiformat und ein Muster angeben:
( FILE_FORMAT => format_name [ , PATTERN => 'regex_pattern' ] )
Gibt ein benanntes Dateiformatobjekt an, das für den Stagingbereich verwendet werden soll, und ein Muster zum Filtern der Menge von Dateien in der Stagingbereich.
Weitere Informationen zum Abfragen von Stagingbereichen finden Sie unter Abfragen von Daten in Stagingdateien.
Verzeichnistabellen-Klausel¶
DIRECTORY( @<stage_name> )
Gibt den Name eines Stagingbereichs an, der eine Verzeichnistabelle enthält.
Hierarchisches Abfrageergebnis¶
hierarchical_query_result
Ein hierarchisches Abfrageergebnis ist das Resultset aus der Verwendung einer Klausel wie CONNECT BY zum Abfragen einer Tabelle mit hierarchischen Daten. Weitere Details dazu finden Sie unter CONNECT BY.
Nutzungshinweise¶
Objektnamen sind SQL-Bezeichner. Bei ihnen wird standardmäßig nicht zwischen Groß- und Kleinschreibung unterschieden. Um Groß-/Kleinschreibung zu erhalten, schließen Sie sie in doppelte Anführungszeichen (
" "
) ein.
Beispiele¶
Erstellen Sie eine Tabelle, und laden Sie Daten hinein:
CREATE TABLE ftable1 (retail_price FLOAT, wholesale_cost FLOAT, description VARCHAR); INSERT INTO ftable1 (retail_price, wholesale_cost, description) VALUES (14.00, 6.00, 'bling');
Hier ist ein einfaches Beispiel für die Verwendung der FROM-Klausel:
SELECT description, retail_price, wholesale_cost FROM ftable1; +-------------+--------------+----------------+ | DESCRIPTION | RETAIL_PRICE | WHOLESALE_COST | |-------------+--------------+----------------| | bling | 14 | 6 | +-------------+--------------+----------------+
Dieses Beispiel ist identisch mit dem vorherigen Beispiel, gibt jedoch den Tabellennamen an, der vom Schema für die Tabelle qualifiziert wird:
SELECT description, retail_price, wholesale_cost FROM temporary_doc_test.ftable1; +-------------+--------------+----------------+ | DESCRIPTION | RETAIL_PRICE | WHOLESALE_COST | |-------------+--------------+----------------| | bling | 14 | 6 | +-------------+--------------+----------------+
In diesem Beispiel wird eine Inline-Ansicht erstellt und anschließend in der Abfrage verwendet:
SELECT v.profit FROM (SELECT retail_price - wholesale_cost AS profit FROM ftable1) AS v; +--------+ | PROFIT | |--------| | 8 | +--------+
In diesem Beispiel wird eine Stichprobe von 10 % der Daten in der Tabelle abgefragt:
SELECT * FROM sales SAMPLE(10);
In diesem Beispiel wird eine UDTF (benutzerdefinierte Tabellenfunktion) ausgeführt:
SELECT * FROM TABLE(Fibonacci_Sequence_UDTF(6.0::FLOAT));
In diesen Beispielen wird eine AT
-Klausel verwendet, um historische Daten der folgenden angegebenen Zeitpunkte in der Vergangenheit zurückzugeben:
Ein Tag früher als die aktuelle Uhrzeit (
-86400 = -3600 * 24
).Bestimmte Urzeit und bestimmter Tag.
SELECT * FROM sales AT(OFFSET => -86400); SELECT * FROM sales AT(TIMESTAMP => '2018-07-27 12:00:00'::TIMESTAMP);Weitere Informationen zu
AT
finden Sie unter AT | BEFORE.
In diesem Beispiel werden Dateien abgerufen, die sich in einem benannten Stagingbereich befinden:
SELECT v.$1, v.$2, ... FROM @my_stage( FILE_FORMAT => 'csv_format', PATTERN => '.*my_pattern.*') v;
In diesem Beispiel werden alle Metadatenspalten in der Verzeichnistabelle eines Stagingbereichs namens mystage
abgerufen:
SELECT * FROM DIRECTORY(@mystage);
In diesem Beispiel werden die FILE_URL-Spaltenwerte aus einer Verzeichnistabelle für Dateien abgerufen, die größer als 100.000 Bytes sind:
SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE SIZE > 100000;
Dieses Beispiel ruft die Werte der Spalte FILE_URL aus einer Verzeichnistabelle für Dateien mit kommagetrennten Werten ab:
SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE RELATIVE_PATH LIKE '%.csv';