Kursinhalt
Fortgeschrittene SQL
Fortgeschrittene SQL
Union-Klausel
Wir haben die Aufmerksamkeit eines Kunden erregt, der SQL-Abfragen benötigt. Bevor wir uns in JOINs
vertiefen, lernen wir die UNION
-Klausel kennen, die entscheidend dafür ist, mehrere Tabellen zu kombinieren.
Hier sind einige wichtige Punkte zur Verwendung von UNION
:
-
Spaltenanzahl und Reihenfolge: Alle mit
UNION
kombinierten Abfragen müssen die gleiche Anzahl von Spalten in gleicher Reihenfolge haben; -
Datentypen: Die Spalten in jeder Abfrage müssen kompatible Datentypen besitzen;
-
Eindeutige Zeilen: Standardmäßig entfernt
UNION
doppelte Zeilen. Verwenden SieUNION ALL
, wenn Sie Duplikate beibehalten möchten.
Zum besseren Verständnis, wie man Tabellen korrekt kombiniert unter Einsatz der UNION
-Klausel, habe ich eine zusätzliche Tabelle eingeführt, die Informationen über contractors
enthält.
Es gibt hier nicht viele Informationen, nur first_name
, last_name
und email
.
Man erkennt, dass diese Tabelle Ähnlichkeiten mit der employees
-Tabelle aufweist. Mithilfe der UNION
-Klausel können wir diese beiden Tabellen kombinieren, um beispielsweise eine Liste aller Vornamen und Nachnamen der am Unternehmen beteiligten employees und contractors zu erhalten.
Dazu verwenden wir die UNION
-Klausel:
(SELECT employee_id as id, first_name, last_name FROM employees) UNION (SELECT contractor_id as id, first_name, last_name FROM contractors) ORDER BY id
Lassen Sie uns Schritt für Schritt durchgehen, was passiert:
Wir haben zwei Abfragen, die jeweils drei Spalten mit gleichen Datentypen zurückgeben. Wir möchten den Id
, first_name
und last_name
von allen im Unternehmen sehen. Wir haben die Id
-Spalte auch umbenannt, sodass beide Abfragen gleiche Spaltennamen haben.
Anschließend verwenden wir UNION
, um die Ergebnisse dieser Abfragen zu kombinieren und Duplikate zu entfernen (obwohl hier keine vorhanden sind).
Zum Schluss sortieren wir die Ergebnisse mittels Id
nach ORDER BY
.
Hinweis
Wir sortieren nach
Id
, was eine gemeinsame Spalte in beiden Tabellen ist.
Nach der Verwendung von UNION
erhalten wir eine "einzelne große Abfrage", die wir weiter mit Klauseln wie ORDER BY
bearbeiten können.
Wir können WHERE
oder GROUP BY
nicht direkt mit Tabellen verwenden, die mit UNION
kombiniert wurden. Um diese Klauseln anzuwenden, müssen wir einen subquery im FROM
-Abschnitt verwenden. Hier ist ein Beispiel, wie es gemacht wird:
SELECT id, first_name, last_name FROM ( SELECT employee_id AS id, first_name, last_name FROM employees UNION SELECT contractor_id AS id, first_name, last_name FROM contractors ) AS combined WHERE first_name = 'Jane'
Die Verwendung eines subquery im FROM
-Abschnitt gibt uns mehr Flexibilität! Es mag anfangs schwierig erscheinen, aber wenn man dies beherrscht, wird das Schreiben komplexer Abfragen viel einfacher.
1. Welche Spalten sind erforderlich, wenn Sie die UNION
-Klausel in SQL verwenden?
2. Wie behandelt die UNION
-Klausel standardmäßig doppelte Zeilen?
Danke für Ihr Feedback!