UNION vs. UNION ALL
Teil des Abschnitts Über die Grundlagen hinaus der SQL-Journey von Coddy — Lektion 16 von 27.
Sie haben UNION in Grundlagen kennengelernt: Es stapelt zwei Ergebnismengen übereinander. Standardmäßig werden dabei auch Duplikate entfernt, was einen zusätzlichen Sortiervorgang erfordert.
SELECT name FROM authors
UNION
SELECT name FROM editorsUNION ALL führt die gleiche Stapelung durch, aber behält Duplikate bei. Es ist schneller und fast immer das, was man möchte, wenn man weiß, dass die beiden Seiten nicht dieselbe Zeile erzeugen können oder wenn man tatsächlich jedes Vorkommen zählen möchte.
SELECT name FROM authors
UNION ALL
SELECT name FROM editorsBeide Seiten müssen die gleiche Anzahl an Spalten in der gleichen Reihenfolge mit kompatiblen Typen zurückgeben.
Aufgabe
EinfachVerfügbare Tabellen und Spalten:
<strong>online_orders</strong>:<strong>order_no</strong>,<strong>amount</strong><strong>retail_orders</strong>:<strong>ticket_no</strong>,<strong>total</strong>
Die beiden Tabellen erfassen Bestellungen aus verschiedenen Kanälen mit unterschiedlichen Spaltennamen. Geben Sie eine kombinierte Liste aller Bestellungen mit den folgenden Spalten zurück:
channel:'online'oder'retail'order_id:order_noaus online,ticket_noaus retailamount: der Gesamtbetrag der Bestellung (ausamountodertotal)
Behalten Sie jede Zeile bei (keine Deduplizierung). Sortieren Sie nach amount absteigend.
Spickzettel
UNION stapelt zwei Ergebnismengen und entfernt Duplikate (langsamer). UNION ALL stapelt und behält Duplikate bei (schneller):
SELECT name FROM authors
UNION ALL
SELECT name FROM editorsBeide Seiten müssen die gleiche Anzahl an Spalten in der gleichen Reihenfolge mit kompatiblen Typen haben. Spaltennamen stammen aus dem ersten SELECT.
Probier es selbst
-- zwei SELECTs, die auf dieselben 3 Spalten ausgerichtet und durch UNION ALL verbunden sind
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.