FROM-Klausel - Amazon Redshift

Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting.

FROM-Klausel

Die -Klausel in einer Abfrage listet die Tabellenreferenzen (Tabellen, Ansichten und Unterabfragen) auf, aus denen Daten ausgewählt werden. Wenn mehrere Tabellenreferenzen aufgelistet werden, muss ein Join für die Tabellen ausgeführt werden, indem entweder in der FROM-Klausel oder in der WHERE-Klausel die entsprechende Syntax verwendet wird. Wenn keine Join-Kriterien angegeben werden, verarbeitet das System die Abfrage als Kreuz-Join (kartesisches Produkt).

Syntax

FROM table_reference [, ...]

wobei table_reference eins der folgenden ist:

with_subquery_table_name [ table_alias ] table_name [ * ] [ table_alias ] ( subquery ) [ table_alias ] table_reference [ NATURAL ] join_type table_reference [ ON join_condition | USING ( join_column [, ...] ) ] table_reference join_type super_expression [ ON join_condition ] table_reference PIVOT ( aggregate(expr) [ [ AS ] aggregate_alias ] FOR column_name IN ( expression [ AS ] in_alias [, ...] ) ) [ table_alias ] table_reference UNPIVOT [ INCLUDE NULLS | EXCLUDE NULLS ] ( value_column_name FOR name_column_name IN ( column_reference [ [ AS ] in_alias ] [, ...] ) ) [ table_alias ] UNPIVOT expression AS value_alias [ AT attribute_alias ] ( super_expression.attribute_name ) AS value_alias [ AT index_alias ] UNNEST ( column_reference ) [AS] table_alias ( unnested_column_name ) UNNEST ( column_reference ) WITH OFFSET [AS] table_alias ( unnested_column_name, [offset_column_name] )

table_alias kann optional verwendet werden, um Tabellen und komplexen Tabellenverweisen und, falls gewünscht, auch ihren Spalten temporäre Namen zu geben, wie im Folgenden gezeigt:

[ AS ] alias [ ( column_alias [, ...] ) ]

Parameter

with_subquery_table_name

Eine Tabelle, die von einer Unterabfrage in der definiert wird WITH-Klausel.

table_name

Der Name einer Tabelle oder Ansicht.

alias

Der temporäre alternative Name für eine Tabelle oder Ansicht. Für eine Tabelle, die von einer Unterabfrage abgeleitet wird, muss ein Alias bereitgestellt werden. In anderen Tabellenreferenzen sind Aliasnamen optional. Das Schlüsselwort AS ist stets optional. Tabellenaliasnamen stellen eine bequeme Abkürzung für die Identifizierung von Tabellen in anderen Teilen einer Abfrage dar, beispielsweise in der WHERE-Klausel. Beispiel:

select * from sales s, listing l where s.listid=l.listid
column_alias

Der temporäre alternative Name für eine Spalte in einer Tabelle oder Ansicht.

subquery

Ein Abfrageausdruck, der zu einer Tabelle evaluiert wird. Die Tabelle ist nur für die Dauer der Abfrage vorhanden und erhält in der Regel einen Namen oder einen Alias. Ein Alias ist jedoch nicht erforderlich. Sie können auch Spaltennamen für Tabellen definieren, die von Unterabfragen abgeleitet werden. Die Vergabe von Spaltenaliasnamen ist wichtig, wenn Sie für die Ergebnisse von Unterabfragen einen Join mit anderen Tabellen ausführen möchten und wenn Sie diese Spalten an anderer Stelle in der Abfrage auswählen oder einschränken möchten.

Eine Unterabfrage kann eine ORDER BY-Klausel enthalten. Diese Klausel hat jedoch keine Auswirkungen, wenn nicht auch eine LIMIT- oder OFFSET-Klausel angegeben ist.

NATURAL

Definiert einen Join, der automatisch alle Paare identisch benannter Spalten in den beiden Tabellen als Joining-Spalten verwendet. Es ist keine explizite Join-Bedingung erforderlich. Wenn die Tabellen CATEGORY und EVENT beispielsweise beide Spalten namens CATID besitzen, ist ein Join ihrer CATID-Spalten ein NATURAL-Join dieser Tabellen.

Anmerkung

Wenn ein NATURAL-Join angegeben ist, in den Tabellen, für die ein Join ausgeführt werden soll, jedoch keine identisch benannten Spaltenpaare vorhanden sind, wird für die Abfrage standardmäßig ein Kreuz-Join ausgeführt.

join_type

Geben Sie eine der folgenden Join-Arten an:

  • [INNER] JOIN

  • LEFT [OUTER] JOIN

  • RIGHT [OUTER] JOIN

  • FULL [OUTER] JOIN

  • CROSS JOIN

Kreuz-Joins sind nicht qualifizierte Joins. Sie geben das kartesische Produkt der beiden Tabellen zurück.

Interne und externe Joins sind qualifizierte Joins. Sie sind entweder implizit (in natürlichen Joins), mit der ON- oder USING-Syntax in der FROM-Klausel oder mit einer WHERE-Klauselbedingung qualifiziert.

Ein interner Join gibt nur übereinstimmende Zeilen zurück, basierend auf der Join-Bedingung oder der Liste der Joining-Spalten. Ein externer Join gibt alle Zeilen zurück, die der entsprechende interne Join zurückgeben würde, und zusätzlich nicht übereinstimmende Zeilen aus der Tabelle „links“, aus der Tabelle „rechts“ oder aus beiden Tabellen. Die linke Tabelle wird zuerst aufgelistet. Die rechte Tabelle wird als zweite Tabelle aufgelistet. Die nicht übereinstimmenden Zeilen enthalten NULL-Werte, um die Lücken in den Ausgabespalten zu füllen.

ON join_condition

Eine Join-Spezifikation, in der die Joining-Spalten als eine Bedingung angegeben werden, die dem Schlüsselwort ON folgt. Beispiel:

sales join listing on sales.listid=listing.listid and sales.eventid=listing.eventid
USING ( join_column [, ...] )

Eine Join-Spezifikation, in der die Joining-Spalten in Klammern angegeben werden. Wenn mehrere Joining-Spalten angegeben werden, werden sie durch Komma abgetrennt. Das Schlüsselwort USING muss der Liste vorangestellt werden. Zum Beispiel:

sales join listing using (listid,eventid)
PIVOT

Dreht die Ausgabe von Zeilen zu Spalten, um tabellarische Daten in einem einfach lesbaren Format darzustellen. Die Ausgabe wird horizontal über mehrere Spalten hinweg dargestellt. PIVOT ähnelt einer GROUP BY-Abfrage mit einer Aggregation, wobei ein Aggregatausdruck verwendet wird, um ein Ausgabeformat anzugeben. Im Gegensatz zu GROUP BY werden die Ergebnisse jedoch in Spalten anstelle von Zeilen zurückgegeben.

Beispiele, die Abfragen mit PIVOT und UNPIVOT veranschaulichen, finden Sie unter Beispiele für PIVOT und UNPIVOT.

UNPIVOT

Umwandeln von Spalten in Zeilen mit UNPIVOT: Der Operator wandelt Ergebnisspalten aus einer Eingabetabelle oder aus Abfrageergebnissen in Zeilen um, damit die Ausgabe besser lesbar ist. UNPIVOT fasst die Daten der Eingabespalten in zwei Ergebnisspalten zusammen: eine Namensspalte und eine Wertspalte. Die Namensspalte enthält die Spaltennamen aus der Eingabe als Zeileneinträge. Die Wertspalte enthält Werte aus den Eingabespalten, wie etwa die Ergebnisse einer Aggregation. Zum Beispiel die Anzahl der Elemente in verschiedenen Kategorien.

Entpivotieren von Objekten mit UNPIVOT (SUPER): Sie können Objekte entpivotieren, expression ein SUPER-Ausdruck ist, der auf ein anderes FROM-Klauselelement verweist. Weitere Informationen finden Sie unter Entpivotieren von Objekten. Hier finden Sie auch Beispiele für Abfragen für halbstrukturierte Daten, z. B. Daten im JSON-Format.

super_expression

Ein gültiger SUPER-Ausdruck. Amazon Redshift gibt für jeden Wert im angegebenen Attribut jeweils eine Zeile zurück. Weitere Informationen zum Datentyp SUPER finden Sie unter Typ SUPER. Weitere Informationen zu nicht verschachtelten SUPER-Werten finden Sie unter Aufheben der Verschachtelung von Abfragen.

attribute_name

Der Name eines Attributs im SUPER-Ausdruck.

index_alias

Alias für den Index, der die Position des Werts im SUPER-Ausdruck angibt.

UNNEST

Erweitert eine verschachtelte Struktur, in der Regel ein SUPER-Array, in Spalten, die die nicht verschachtelten Elemente enthalten. Weitere Informationen zum Entschachteln von SUPER-Daten finden Sie unter Abfragen halbstrukturierter Daten. Beispiele finden Sie unter Beispiele für UNNEST.

unnested_column_name

Der Name der Spalte, in der die nicht verschachtelten Elemente gespeichert sind.

UNNEST ... WITH OFFSET

Fügt der nicht verschachtelten Ausgabe eine Offset-Spalte hinzu, wobei der Offset den nullbasierten Index jedes Elements im Array darstellt. Diese Variante ist nützlich, wenn Sie die Position von Elementen innerhalb eines Arrays anzeigen möchten. Weitere Informationen zum Entschachteln von SUPER-Daten finden Sie unter Abfragen halbstrukturierter Daten. Beispiele finden Sie unter Beispiele für UNNEST.

offset_column_name

Ein benutzerdefinierter Name für die Offset-Spalte, mit dem Sie die Anzeige der Indexspalte in der Ausgabe explizit definieren können. Dieser Parameter ist optional. Standardmäßig ist der Name der Offset-Spalte offset_col.

Nutzungshinweise

Joining-Spalten müssen vergleichbare Datentypen haben.

Ein NATURAL- oder -USING-Join enthält jeweils nur eine Spalte jedes Joining-Spaltenpaars im Zwischenergebnissatz.

Ein Join mit der ON-Syntax enthält beide Joining-Spalten im Zwischenergebnissatz.

Weitere Informationen finden Sie auch unter WITH-Klausel.