Auswählen und Kombinieren von Spalten aus zwei SQL-Tabellen
Beim Arbeiten mit Datenbanken begegnet man häufig Situationen, in denen man Daten aus mehreren Tabellen abrufen muss. Ein solches Szenario tritt auf, wenn man zwei Tabellen mit einer gemeinsamen Spalte hat. In diesem Blogbeitrag werden wir untersuchen, wie man eine bestimmte Spalte, ColumnA
, aus zwei verschiedenen Tabellen—Table1
und Table2
—auswählt und als ein einzelnes Ergebnis-Set zurückgibt.
Das Problem
Angenommen, Sie haben zwei Tabellen in Ihrer Datenbank:
-
Table1 enthält eine Spalte mit dem Namen
ColumnA
mit Werten:- a
- b
- c
-
Table2 enthält ebenfalls eine Spalte mit dem Namen
ColumnA
mit Werten:- d
- e
- f
Ihr Ziel ist es, alle Instanzen von ColumnA
aus beiden Tabellen in eine einzelne Spalte im Ergebnis-Set zu extrahieren. Das bedeutet, dass die Ausgabe folgendes anzeigen soll:
a
b
c
d
e
f
Die Lösung
Um dies zu erreichen, können wir eine SQL-Abfrage mit dem UNION
-Operator verwenden. Der UNION
-Operator ermöglicht es uns, die Ergebnisse von zwei oder mehr SELECT
-Anweisungen in einem einzigen Ergebnis-Set zu kombinieren.
SQL-Abfrage-Beispiel
Hier ist die SQL-Abfrage, die diese Aufgabe erfüllt:
SELECT ColumnA FROM Table1
UNION
SELECT ColumnA FROM Table2
ORDER BY 1;
Aufschlüsselung der Abfrage
-
Spaltenauswahl:
- Wir beginnen mit
SELECT ColumnA FROM Table1
, um alle Einträge ausColumnA
inTable1
abzurufen. - Der nächste Teil,
SELECT ColumnA FROM Table2
, macht dasselbe fürTable2
.
- Wir beginnen mit
-
Kombinieren der Ergebnisse:
- Der
UNION
-Operator verbindet die Ergebnis-Sets beiderSELECT
-Anweisungen. - Beachten Sie, dass der
UNION
-Operator standardmäßig doppelte Werte entfernt; falls es also Überschneidungen in den Werten vonColumnA
zwischen den beiden Tabellen gibt, erscheinen diese nur einmal in der endgültigen Ausgabe.
- Der
-
Sortierung der Ergebnisse:
- Die Klausel
ORDER BY 1
sortiert die endgültige Ausgabe nach der ersten Spalte, die in diesem FallColumnA
ist.
- Die Klausel
Wann man UNION ALL verwenden sollte
Wenn Sie sicher sind, dass die Werte in ColumnA
aus Table1
und Table2** niemals überlappen, sollten Sie
UNION ALLanstelle von
UNION` verwenden. Diese Option vermeidet den Aufwand, nach Duplikaten zu suchen, und kann die Leistung verbessern:
SELECT ColumnA FROM Table1
UNION ALL
SELECT ColumnA FROM Table2
ORDER BY 1;
Zusammenfassung
Zusammenfassend lässt sich sagen, dass die Kombination von Daten aus mehreren Tabellen in SQL effizient mit dem UNION
-Operator gehandhabt werden kann. Diese Praxis vereinfacht nicht nur den Datenabruf, sondern macht auch Ihre Datenbankabfragen robuster und flexibler.
Jetzt können Sie ganz einfach Spalten aus verschiedenen Tabellen extrahieren und zusammenführen, wodurch Sie Ihre Fähigkeit zur Verwaltung und Analyse Ihrer Daten effektiv verbessern!