mysql union comprehensive tutorial with union examples
In diesem Lernprogramm werden der Befehl MySQL UNION, seine Typen Union vs Union All und Beispiele zum Kombinieren von Daten aus zwei oder mehr Abfragen erläutert:
MySQL UNION wird verwendet, um Ergebnisse aus mehreren SELECT-Abfragen in einer einzigen Ergebnismenge zu kombinieren. Es ist auch möglich, alle komplexen Abfragen / Operationen in den SELECT-Abfragen zu haben und UNION mit anderen SELECT-Anweisungen auszuführen, um ein kombiniertes Ergebnis zu erhalten.
bestes Bereinigungsprogramm für Windows 10
Das Standardmerkmal einer UNION-Anweisung besteht darin, die doppelten Einträge oder Zeilen aus dem resultierenden Satz von Zeilen zu entfernen. Es bietet jedoch auch Möglichkeiten, die doppelten Datensätze mithilfe der UNION ALL-Klausel abzurufen.
Was du lernen wirst:
- UNION durch Mengenlehre verstehen
- Welches Problem löst MySQL UNION?
- MySQL UNION gegen UNION ALL
- Fazit
UNION durch Mengenlehre verstehen
Die Funktionsweise der UNION könnte aus den Prinzipien der SET-Theorie sehr gut verstanden werden.
Angenommen, wir haben Tabellen A und B, wie sie durch die folgenden Sätze dargestellt werden, und sie haben einige überlappende Daten (oder sie können auch völlig unabhängig sein) - UNION wird die Kombination von Daten aus beiden Tabellen enthalten.
Sehen wir uns ein Beispiel an, in dem die Mengen A und B einige gemeinsame Elemente haben. Die UNION enthält alle Werte aus Satz A und B, wobei die doppelten Werte weggelassen werden.
Was ist nun, wenn die Sätze A und B disjunkt sind und keine gemeinsamen Elemente enthalten? Auch hier wird die UNION das gleiche Ergebnis zurückgeben.
Lassen Sie uns das Szenario diskutieren, in dem sich Elemente zwischen Mengen überschneiden und die doppelten Werte auch in der Ergebnismenge angezeigt werden sollen.
MySQL bietet eine Möglichkeit, dies mit der Option UNION ALL zu tun (siehe Abbildung unten).
Welches Problem löst MySQL UNION?
MySQL UNION wird verwendet, wenn Sie ähnliche Daten in zwei oder mehr Tabellen haben und eine kombinierte Ansicht der in beiden Tabellen enthaltenen Daten anzeigen möchten, anstatt SELECT-Anweisungen für einzelne Tabellen auszuführen.
Zum Beispiel - Angenommen, es gibt 2 Tabellen - Mitarbeiter und Schüler. Und Sie arbeiten an einer Personendatenbank, die nur einen Namen, ein Alter und ein Geburtsdatum für alle Mitarbeiter und Studenten haben möchte.
Ohne UNION müssen Sie separate SELECT-Abfragen für beide Tabellen ausführen und dann die gewünschte Berechnung mit der erhaltenen Ergebnismenge durchführen.
MySQL UNION-Syntax
Die folgenden Abfragen geben eine UNION mit 2 oder mehr als 2 SELECT-Anweisungen zurück.
SELECT {column1}, {column2} FROM {table1} UNION [ALL | DISTINCT] SELECT {column3}, {column4} FROM {table2} UNION [ALL | DISTINCT] SELECT ...
Versuchen wir, verschiedene Komponenten der Syntax zu sehen
- Wir können sehen, dass es möglich ist, mehrere SELECT-Abfragen mit UNION zu kombinieren, um den resultierenden Zeilensatz zu erhalten.
- Spaltenname und Datentypen: Es ist wichtig zu verstehen, dass die Spalten, die wir kombinieren möchten, denselben oder kompatiblen Datentyp haben sollten. Beispielsweise: Wenn Sie Spalte1 als STRING haben, sollte Spalte3 ebenfalls STRING (oder STRING-kompatibel) sein.
- Die Spaltennamen und Positionen werden aus der ersten SELECT-Anweisung in der UNION-Abfrage bestimmt. Zum Beispiel in der obigen Syntax: Spalte1 und Spalte2 werden in der Ergebnismenge als Kopfspalten benannt, und die Werte von Spalte3 und Spalte4 werden Spalte1 bzw. Spalte2 zugeordnet.
- Die Ergebnisse einer UNION-Abfrage entfernen standardmäßig doppelte Einträge. Beispielsweise, In diesem Fall werden diese Zeilen in der Ergebnismenge weggelassen, wenn ein doppelter Eintrag vorhanden ist, der genau übereinstimmt und dieselben Werte für Spalte1 und Spalte2 aufweist.
Wenn Duplikate gewünscht werden, können wir die Option 'ALL' zusammen mit der UNION verwenden.
Die Verwendung von UNTERSCHEIDLICH ist standardmäßig impliziert. Bitte beachten Sie, dass dies auch explizit angegeben werden kann, um eine bessere Lesbarkeit zu gewährleisten.
Sehen wir uns ein Beispielbeispiel für eine UNION-Abfrage an.
Angenommen, es gibt zwei Tabellen - Mitarbeiter und Schüler - mit jeweils persönlichen Informationen.
CREATE TABLE employee (id INT PRIMARY KEY, name VARCHAR(100), age INT, dob DATE, department VARCHAR(100)); CREATE TABLE student (id INT PRIMARY KEY, name VARCHAR(100), age INT, dob DATE, department VARCHAR(100));
Geben Sie nun einige Dummy-Daten in diese beiden Tabellen ein, wie unten gezeigt:
INSERT INTO employee values (1,'Darren', 32, '1988-05-20', 'ENGINEERING'), (2,'Abhishek', 28, '1992-05-20', 'ACCOUNTING'), (3,'Amit', 30, '1990-09-20', 'ENGINEERING'), (4,'Steven', 40, '1980-05-21', 'HUMAN RESOURCES'), (5,'Kartik', 20, '2000-05-12', 'TRAINEE'); ---------------------------------------------- INSERT INTO student values (1,'Akash', 22, '1998-05-17', 'COMPUTER'), (2,'Ian', 26, '1994-06-18', 'COMPUTER'), (3,'Shirley', 19, '2001-11-20', 'MECHANICAL'), (4,'Joana', 21, '1999-05-21', 'ELECTRONICS'), (5,'Kartik', 20, '2000-05-12', 'COMPUTER');
Wie Sie oben sehen können, haben wir absichtlich eine Zeile hinzugefügt, die dieselben Attribute für Name, Alter und Geburtsdatum aufweist.
Lassen Sie uns nun sehen, wie wir die Daten in diesen beiden Tabellen mit UNION-Befehlen kombinieren können. Wir werden Benutzername und Alter aus beiden Tabellen abfragen.
Einfache UNION
Abfrage:
SELECT name, age FROM employee UNION SELECT name, age FROM student;
Das Ergebnis enthält 9 Datensätze (was bedeutet, dass bei der obigen Abfrage der doppelte Eintrag weggelassen wurde).
Ausgabe:
Name | Alter |
---|---|
Ian | 26 |
Darren | 32 |
Abhishek | 28 |
Amit | 30 |
Steven | 40 |
Kartik | zwanzig |
Akash | 22 |
Shirley | 19 |
Joana | einundzwanzig |
UNION Mit UNION ALL
Durch die Verwendung der UNION with ALL-Klausel wird sichergestellt, dass auch die doppelten Einträge angezeigt werden.
Abfrage:
SELECT name, age FROM employee UNION ALL SELECT name, age FROM student;
Ausgabe:
Name | Alter |
---|---|
Ian | 26 |
Darren | 32 |
Abhishek | 28 |
Amit | 30 |
Steven | 40 |
Kartik | zwanzig |
Akash | 22 |
Shirley | 19 |
Joana | einundzwanzig |
Kartik | zwanzig |
UNION Mit Bedingung
Fügen wir den SELECT-Anweisungen Bedingungen hinzu, unter denen wir Daten von Mitarbeitern unter 30 Jahren und Schülern unter 25 Jahren wünschen.
Abfrage:
SELECT name, age FROM employee where age <30 UNION SELECT name, age FROM student where age < 25;
Ausgabe:
Name | Alter |
---|---|
Amit | 30 |
Abhishek | 28 |
Kartik | zwanzig |
Akash | 22 |
Shirley | 19 |
Joana | einundzwanzig |
Wie Sie oben sehen können, enthält die Ergebnismenge das kombinierte Ergebnis mit einzelnen validierten SELECT-Bedingungen.
UNION-Ergebnisse bestellen
Die Ergebnisse einer UNION-Abfrage sind standardmäßig ungeordnet.
Um eine Reihenfolge nach einer in der resultierenden Menge vorhandenen Spalte festzulegen, kann am Ende des UNION-Befehls eine ORDER BY-Klausel angegeben werden.
Verwenden wir dieselben Mitarbeiter- / Studentendaten und ordnen die UNION-Ergebnisse in aufsteigender Reihenfolge nach Alter.
SELECT name, age FROM employee UNION SELECT name, age FROM student ORDER BY age asc
Ausgabe:
Name | Alter |
---|---|
Shirley | 19 |
Kartik | zwanzig |
Joana | einundzwanzig |
Akash | 22 |
Ian | 26 |
Abhishek | 28 |
Darren | 32 |
Steven | 40 |
Die obige Ergebnismenge ist nach Alterswerten in aufsteigender Reihenfolge geordnet. Wir können auch Spaltenaliasnamen verwenden, um auf die Spalten in der ORDER BY-Klausel zu verweisen.
Beispielsweise: - Eine Abfrage wie die folgende liefert ebenfalls das gleiche Ergebnis.
SELECT name as customer_name, age as customer_age FROM employee UNION SELECT name, age FROM student ORDER BY customer_age asc
Es gibt eine andere Möglichkeit, die ORDER BY-Klausel zu verwenden, indem Sie nur die Spaltenposition anstelle des Spaltennamens angeben.
Beispielsweise: In der obigen UNION-Abfrage wählen wir Name und Alter aus, was bedeutet, dass sich diese Spalten an den Positionen 1 bzw. 2 befinden.
Um nach Alter zu ordnen, können wir einfach die Position anstelle des tatsächlichen Spaltennamens angeben.
Daher liefert die folgende Abfrage auch das gleiche Ergebnis.
SELECT name, age FROM employee UNION SELECT name, age FROM student ORDER BY 2 asc
MySQL UNION gegen UNION ALL
MySQL bietet 2 Varianten von UNION, d. H. UNION UNTERSCHIEDLICH und UNION ALL
Bitte beachten Sie, dass DISTINCT standardmäßig impliziert ist, auch wenn dies nicht angegeben ist.
Der Hauptunterschied zwischen beiden besteht darin, dass UNION ALL auch das Kombinieren und Zurückgeben doppelter Zeilen ermöglicht, während UNION nur die kombinierten Zeilen zurückgibt, wobei doppelte Zeilen entfernt werden.
In der folgenden Tabelle werden die Details erläutert:
Parameter | UNION | UNION ALL |
---|---|---|
Definition | Entspricht UNION DISTINCT - ignoriert doppelte Datenzeilen, während das Ergebnis zurückgegeben wird | Gibt alle Zeilen einschließlich Duplikate zurück |
Syntax | SELECT {columnList} FROM {table1} UNION SELECT {columnList} FROM {table2} | SELECT {columnList} FROM {table1} UNION ALL SELECT {columnList} FROM {table2} |
Datenanforderungen | Kombinierte Daten sollten ähnliche Datentypen haben und beim Abrufen aus mehreren Tabellen in derselben Reihenfolge abgerufen werden | Gleich wie UNION |
Häufig gestellte Fragen
F # 1) Ist Union schneller als JOIN?
Antworten: UNION und JOINs werden für praktisch zwei verschiedene Zwecke verwendet.
Technisch gesehen ist UNION viel schneller als JOIN (insbesondere bei großen Datenmengen), da UNION nur Datenzeilen aus den einzelnen SELECT-Anweisungen verkettet.
F # 2) Was ist der UNION ALL-Operator?
Antworten: Ähnlich wie bei UNION gibt der Operator UNION ALL auch die UNION zwischen 2 SELECT-Abfragen zurück, der Unterschied besteht jedoch darin, dass er auch die doppelten Zeilen / Einträge enthält.
F # 3) Was ist der Unterschied zwischen UNION und JOIN?
Antworten: Sowohl UNION als auch JOIN werden verwendet, um Daten aus zwei oder mehr Tabellen zu kombinieren. Es gibt jedoch einen großen Unterschied in Bezug auf die erhaltene Ergebnismenge und die Art und Weise, wie Daten abgerufen werden.
Ähnlichkeiten und Unterschiede zwischen JOIN und UNION sind in der folgenden Tabelle aufgeführt:
UNION | BEITRETEN |
---|---|
Kombiniert Daten aus mehreren Tabellen | Kombiniert Daten aus mehreren Tabellen |
Erfordert keine bestimmte Bedingung zum Sammeln oder Kombinieren von Daten | JOIN arbeitet mit einer JOIN-Bedingung, die erforderlich ist, um Daten zu validieren, die in der Ergebnismenge eingehen |
Daten aus verschiedenen Tabellen werden als verschiedene Zeilen der Ergebnismenge verwendet | Daten aus verschiedenen Tabellen werden zu einer einzigen Zeile zusammengefasst. Beispielsweise kann eine Zeile in der Ergebnismenge je nach JOIN-Bedingung und SELECT-Abfrage 2 Spalten aus Tabelle 1, 3 Spalten aus Tabelle 2 usw. enthalten |
UNIONs sind einfach und unkompliziert | JOINS erfordern komplexe Bedingungen und je nach Bedarf können mehrere Arten von Joins wie INNER / OUTER usw. verwendet werden. |
Fazit
In diesem Tutorial haben wir gelernt, wie Sie mit MySQL UNION Daten aus zwei oder mehr SELECT-Anweisungen kombinieren.
Die UNION-Anweisung ist sehr hilfreich, um ähnliche Daten aus großen Mengen verschiedener Tabellen zusammenzustellen und anschließend eine Analyse der kombinierten Daten durchzuführen.
Der Befehl UNION unterstützt auch eine ALL-Klausel, mit der auch doppelte Datensätze abgerufen werden können.
Literatur-Empfehlungen
- Was ist MySQL und warum wird es verwendet?
- Unterschied zwischen SQL und MySQL und SQL Server (mit Beispielen)
- Inner Join Vs Outer Join: Genauer Unterschied zu Beispielen
- MySQL JOIN Tutorial: Inner, Außen, Kreuz, Links, Rechts und Selbst
- MySQL Create View Tutorial mit Codebeispielen
- MySQL Tutorial zum Erstellen von Tabellen mit Beispielen
- Tutorial zur MySQL-Update-Anweisung - Syntax und Beispiele für Update-Abfragen
- Top 40 der besten Fragen und Antworten zu MySQL-Interviews (2021 Fragen)