Union-Klausel
Wir haben das Interesse eines Kunden geweckt, der SQL-Abfragen benötigt. Bevor wir uns mit JOINs
beschäftigen, lernen wir die UNION
-Klausel kennen, die unerlässlich ist, um 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 an Spalten in derselben Reihenfolge haben; -
Datentypen: Die Spalten in jeder Abfrage müssen kompatible Datentypen aufweisen;
-
Eindeutige Zeilen: Standardmäßig entfernt
UNION
doppelte Zeilen. Verwenden SieUNION ALL
, wenn Sie Duplikate beibehalten möchten.
Um das korrekte Kombinieren von Tabellen mit der UNION
-Klausel besser zu verstehen, habe ich eine zusätzliche Tabelle eingeführt, die Informationen über contractors
enthält.
Es sind nur wenige Informationen vorhanden: first_name
, last_name
und email
.
Es ist ersichtlich, dass diese Tabelle Ähnlichkeiten mit der Tabelle employees
aufweist. Mit der UNION
-Klausel können wir diese beiden Tabellen zusammenführen, um beispielsweise eine Liste aller Vor- und Nachnamen von Mitarbeitern und Auftragnehmern im Unternehmen anzuzeigen.
Dazu verwenden wir die UNION
-Klausel:
12345678(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
Im Folgenden wird erläutert, was hier geschieht:
Es gibt zwei Abfragen, die jeweils drei Spalten mit denselben Datentypen zurückgeben. Angezeigt werden sollen die Id
, first_name
und last_name
aller Personen im Unternehmen. Die Spalte Id
wurde umbenannt, sodass beide Abfragen identische Spaltennamen besitzen.
Anschließend wird mit UNION
das Ergebnis dieser Abfragen zusammengeführt, wobei Duplikate entfernt werden (hier sind jedoch keine vorhanden).
Abschließend erfolgt eine Sortierung der Ergebnisse nach Id
mittels ORDER BY
.
Hinweis
Die Sortierung erfolgt nach
Id
, einer gemeinsamen Spalte beider Tabellen.
Nach Verwendung von UNION
entsteht eine "einzelne große Abfrage", die mit weiteren Klauseln wie ORDER BY
weiterverarbeitet werden kann.
WHERE
oder GROUP BY
können nicht direkt mit Tabellen verwendet werden, die durch UNION
kombiniert wurden. Um diese Klauseln anzuwenden, muss eine Unterabfrage im FROM
-Abschnitt verwendet werden. Nachfolgend ein Beispiel, wie dies umgesetzt wird:
123456789SELECT 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 einer Unterabfrage im FROM
-Abschnitt bietet mehr Flexibilität. Dies kann anfangs komplex erscheinen, aber das Beherrschen dieser Technik erleichtert das Schreiben anspruchsvoller Abfragen erheblich.
1. Welche Spalten sind erforderlich, wenn die UNION
-Klausel in SQL verwendet wird?
2. Wie behandelt die UNION
-Klausel standardmäßig doppelte Zeilen?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 4
Union-Klausel
Swipe um das Menü anzuzeigen
Wir haben das Interesse eines Kunden geweckt, der SQL-Abfragen benötigt. Bevor wir uns mit JOINs
beschäftigen, lernen wir die UNION
-Klausel kennen, die unerlässlich ist, um 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 an Spalten in derselben Reihenfolge haben; -
Datentypen: Die Spalten in jeder Abfrage müssen kompatible Datentypen aufweisen;
-
Eindeutige Zeilen: Standardmäßig entfernt
UNION
doppelte Zeilen. Verwenden SieUNION ALL
, wenn Sie Duplikate beibehalten möchten.
Um das korrekte Kombinieren von Tabellen mit der UNION
-Klausel besser zu verstehen, habe ich eine zusätzliche Tabelle eingeführt, die Informationen über contractors
enthält.
Es sind nur wenige Informationen vorhanden: first_name
, last_name
und email
.
Es ist ersichtlich, dass diese Tabelle Ähnlichkeiten mit der Tabelle employees
aufweist. Mit der UNION
-Klausel können wir diese beiden Tabellen zusammenführen, um beispielsweise eine Liste aller Vor- und Nachnamen von Mitarbeitern und Auftragnehmern im Unternehmen anzuzeigen.
Dazu verwenden wir die UNION
-Klausel:
12345678(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
Im Folgenden wird erläutert, was hier geschieht:
Es gibt zwei Abfragen, die jeweils drei Spalten mit denselben Datentypen zurückgeben. Angezeigt werden sollen die Id
, first_name
und last_name
aller Personen im Unternehmen. Die Spalte Id
wurde umbenannt, sodass beide Abfragen identische Spaltennamen besitzen.
Anschließend wird mit UNION
das Ergebnis dieser Abfragen zusammengeführt, wobei Duplikate entfernt werden (hier sind jedoch keine vorhanden).
Abschließend erfolgt eine Sortierung der Ergebnisse nach Id
mittels ORDER BY
.
Hinweis
Die Sortierung erfolgt nach
Id
, einer gemeinsamen Spalte beider Tabellen.
Nach Verwendung von UNION
entsteht eine "einzelne große Abfrage", die mit weiteren Klauseln wie ORDER BY
weiterverarbeitet werden kann.
WHERE
oder GROUP BY
können nicht direkt mit Tabellen verwendet werden, die durch UNION
kombiniert wurden. Um diese Klauseln anzuwenden, muss eine Unterabfrage im FROM
-Abschnitt verwendet werden. Nachfolgend ein Beispiel, wie dies umgesetzt wird:
123456789SELECT 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 einer Unterabfrage im FROM
-Abschnitt bietet mehr Flexibilität. Dies kann anfangs komplex erscheinen, aber das Beherrschen dieser Technik erleichtert das Schreiben anspruchsvoller Abfragen erheblich.
1. Welche Spalten sind erforderlich, wenn die UNION
-Klausel in SQL verwendet wird?
2. Wie behandelt die UNION
-Klausel standardmäßig doppelte Zeilen?
Danke für Ihr Feedback!