Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
SELECT-Liste
Die SELECT-Liste nennt die Spalten, Funktionen und Ausdrücke, die die Abfrage zurückgeben soll. Der Liste stellt die Ausgabe der Abfrage dar.
Weitere Hinweise zu SQL-Funktionen finden Sie unter SQL-Funktionsreferenz. Weitere Informationen zu Ausdrücken finden Sie unter Bedingte Ausdrücke.
Syntax
SELECT [ TOP number ] [ ALL | DISTINCT ] * | expression [ AS column_alias ] [, ...]
Parameter
- TOP number
-
TOP verwendet als Argument eine positive Ganzzahl, die die Anzahl der Zeilen definiert, die an den Client zurückgegeben werden. Das Verhalten mit TOP-Klausel ist mit dem Verhalten mit LIMIT-Klausel identisch. Die Anzahl der zurückgegebenen Zeilen ist fest, der Zeilensatz jedoch nicht. Verwenden Sie zur Rückgabe eines konsistenten Zeilensatzes TOP oder LIMIT in Verbindung mit einer ORDER BY-Klausel.
- ALL
-
Ein redundantes Schlüsselwort, das das Standardverhalten definiert, wenn Sie nicht DISTINCT angeben.
SELECT ALL *
bedeutet das gleiche wieSELECT *
(Auswahl aller Zeilen für alle Spalten und Beibehaltung von Duplikaten). - DISTINCT
-
Eine Option, die duplizierte Zeilen aus dem Ergebnissatz entfernt, basierend auf übereinstimmenden Werten in einer oder mehreren Spalten.
Anmerkung
Wenn Ihre Anwendung ungültige Fremdschlüssel oder Primärschlüssel zulässt, kann dies dazu führen, dass Abfragen falsche Ergebnisse zurückgeben. Beispielsweise kann eine SELECT DISTINCT-Abfrage doppelte Zeilen zurückgeben, wenn die Primärschlüsselspalte nicht alle eindeutigen Werte enthält. Weitere Informationen finden Sie unter Definieren von Tabelleneinschränkungen.
- * (Sternchen)
-
Gibt den gesamten Inhalt der Tabelle zurück (alle Spalten und alle Zeilen).
- expression
-
Ein Ausdruck, der aus einer oder mehreren Spalten gebildet wird, die in den Tabellen vorhanden sind, die von der Abfrage referenziert werden. Ein Ausdruck kann SQL-Funktionen enthalten. Beispiel:
avg(datediff(day, listtime, saletime))
- AS column_alias
-
Ein temporärer Name für die Spalte, der im endgültigen Ergebnissatz verwendet wird. Das Schlüsselwort AS ist optional. Beispiel:
avg(datediff(day, listtime, saletime)) as avgwait
Wenn Sie keinen Alias für einen Ausdruck angeben, bei dem es sich nicht um einen einfachen Spaltennamen handelt, wendet der Ergebnissatz einen Standardnamen auf diese Spalte an.
Anmerkung
Der Alias wird sofort nach seiner Definition in der Zielliste erkannt. Sie können einen Alias in anderen danach definierten Ausdrücken in derselben Zielliste verwenden. Das folgende Beispiel illustriert dies.
select clicks / impressions as probability, round(100 * probability, 1) as percentage from raw_data;
Der Nutzen der lateralen Alias-Referenz ist es, dass Sie den Alias-Ausdruck nicht wiederholen müssen, wenn Sie komplexere Ausdrücke in derselben Zielliste erstellen. Wenn Amazon Redshift diesen Typ einer Referenz analysiert, stimmt es lediglich die zuvor definierten Aliase aufeinander ab. Falls eine Spalte mit demselben Namen wie der vorherige Alias-Ausdruck in der
FROM
-Klausel definiert wurde, erhält die Spalte in derFROM
-Klausel Priorität. Beispiel: Wenn in der Abfrage oben eine Spalte mit der Bezeichnung „Wahrscheinlichkeit“ in den Rohdaten der Tabelle enthalten ist, bezieht sich die „Wahrscheinlichkeit“ im zweiten Ausdruck in der Zielliste auf diese Spalte anstatt auf den Aliasnamen „Wahrscheinlichkeit“.
Nutzungshinweise
TOP ist eine SQL-Erweiterung. Sie bietet eine Alternative zum LIMIT-Verhalten. Sie können TOP und LIMIT nicht in derselben Abfrage verwenden.
Beispiele
Im folgenden Beispiel werden 10 Zeilen aus der Tabelle SALES zurückgegeben. Trotz Verwendung der TOP-Klausel in der Abfrage wird dennoch ein unvorhersehbarer Satz von Zeilen zurückgegeben, da keine Klausel ORDER BY angegeben ist.
select top 10 * from sales;
Die folgende Abfrage ist funktionell gleichwertig, verwendet jedoch anstelle einer TOP-Klausel eine LIMIT-Klausel:
select * from sales limit 10;
Im folgenden Beispiel werden unter Verwendung der TOP-Klausel die ersten 10 Zeilen aus der Tabelle SALES zurückgegeben, in absteigender Reihenfolge nach der Spalte QTYSOLD angeordnet.
select top 10 qtysold, sellerid from sales order by qtysold desc, sellerid; qtysold | sellerid --------+---------- 8 | 518 8 | 520 8 | 574 8 | 718 8 | 868 8 | 2663 8 | 3396 8 | 3726 8 | 5250 8 | 6216 (10 rows)
Im folgenden Beispiel werden die ersten beiden QTYSOLD- und SELLERID-Werte aus der Tabelle SALES zurückgegeben, nach der Spalte QTYSOLD angeordnet:
select top 2 qtysold, sellerid from sales order by qtysold desc, sellerid; qtysold | sellerid --------+---------- 8 | 518 8 | 520 (2 rows)
Im folgenden Beispiel ist die Liste der verschiedenen Kategoriegruppen aus der Tabelle CATEGORY zu sehen:
select distinct catgroup from category order by 1; catgroup ---------- Concerts Shows Sports (3 rows) --the same query, run without distinct select catgroup from category order by 1; catgroup ---------- Concerts Concerts Concerts Shows Shows Shows Sports Sports Sports Sports Sports (11 rows)
Im folgenden Beispiel wird der eindeutige Satz von Wochenzahlen für Dezember 2008 zurückgegeben. Ohne die DISTINCT-Klausel würde die Anweisung 31 Zeilen bzw. eine Zeile für jeden Tag des Monats zurückgeben.
select distinct week, month, year from date where month='DEC' and year=2008 order by 1, 2, 3; week | month | year -----+-------+------ 49 | DEC | 2008 50 | DEC | 2008 51 | DEC | 2008 52 | DEC | 2008 53 | DEC | 2008 (5 rows)