Was ist der Unterschied zwischen JOIN und UNION?

252

Was ist der Unterschied zwischen JOINund UNION? Kann ich ein Beispiel haben?

Gold
quelle
Jedes moderne DBS wie MariaDB implementiert einen UNION JOIN-Befehl. Dies ist ein SQL- Befehl, der jedoch nicht bekannt ist oder nicht verwendet wird. Erfahren Sie mehr über UNION JOIN .
Auston

Antworten:

301

UNIONSetzt Zeilen aus Abfragen nacheinander, erstellt JOINein kartesisches Produkt und unterteilt es - völlig andere Vorgänge. Triviales Beispiel für UNION:

mysql> SELECT 23 AS bah
    -> UNION
    -> SELECT 45 AS bah;
+-----+
| bah |
+-----+
|  23 | 
|  45 | 
+-----+
2 rows in set (0.00 sec)

ähnliches triviales Beispiel für JOIN:

mysql> SELECT * FROM 
    -> (SELECT 23 AS bah) AS foo 
    -> JOIN 
    -> (SELECT 45 AS bah) AS bar
    -> ON (33=33);
+-----+-----+
| foo | bar |
+-----+-----+
|  23 |  45 | 
+-----+-----+
1 row in set (0.01 sec)
Alex Martelli
quelle
6
Können Sie mir bitte sagen, was ein ist UNION-JOINund wie ich es in Standard-SQL erreichen kann? Maria DB hat einen Befehl union join, andere Datenbanken jedoch nicht. Vielen Dank.
Erran Morad
72

Joins und Unions können verwendet werden, um Daten aus einer oder mehreren Tabellen zu kombinieren. Der Unterschied liegt in der Kombination der Daten.

In einfachen Worten kombinieren Joins Daten zu neuen Spalten . Wenn zwei Tabellen miteinander verbunden sind, werden die Daten aus der ersten Tabelle in einem Satz von Spalten neben der Spalte der zweiten Tabelle in derselben Zeile angezeigt.

Gewerkschaften kombinieren Daten in neuen Zeilen. Wenn zwei Tabellen miteinander „verbunden“ sind, befinden sich die Daten aus der ersten Tabelle in einem Satz von Zeilen und die Daten aus der zweiten Tabelle in einem anderen Satz. Die Zeilen sind im gleichen Ergebnis.

Hier ist eine visuelle Darstellung eines Joins. Die Spalten von Tabelle A und B werden zu einem einzigen Ergebnis zusammengefasst.

Geben Sie hier die Bildbeschreibung ein

Jede Zeile im Ergebnis enthält Spalten aus BEIDEN Tabellen A und B. Zeilen werden erstellt, wenn Spalten aus einer Tabelle mit Spalten aus einer anderen übereinstimmen. Diese Übereinstimmung wird als Join-Bedingung bezeichnet.

Dies macht Joins wirklich großartig, um Werte nachzuschlagen und sie in Ergebnisse einzubeziehen. Dies ist normalerweise das Ergebnis der Denormalisierung (Umkehrung der Normalisierung) und umfasst die Verwendung des Fremdschlüssels in einer Tabelle, um Spaltenwerte mithilfe des Primärschlüssels in einer anderen Tabelle nachzuschlagen.

Vergleichen Sie nun die obige Darstellung mit der einer Gewerkschaft. In einer Union stammt jede Zeile im Ergebnis aus einer Tabelle ODER der anderen. In einer Union werden Spalten nicht kombiniert, um Ergebnisse zu erstellen. Zeilen werden kombiniert.

Geben Sie hier die Bildbeschreibung ein

Sowohl Joins als auch Unions können verwendet werden, um Daten aus einer oder mehreren Tabellen zu einem einzigen Ergebnis zu kombinieren. Sie gehen beide auf unterschiedliche Weise vor. Während ein Join zum Kombinieren von Spalten aus verschiedenen Tabellen verwendet wird, wird die Vereinigung zum Kombinieren von Zeilen verwendet.

Quelle

Humoyun Ahmad
quelle
4
Dies ist ein fantastisches visuelles Beispiel. Ich war mir ziemlich sicher, dass ich nach den anderen Antworten verstanden habe, aber das hat es komplett geklärt.
seadoggie01
Sollte es für das Join-Beispiel technisch gesehen nicht etwa 10 Spalten für das Ergebnis geben?
Bharath Ram
60

UNION kombiniert die Ergebnisse von zwei oder mehr Abfragen zu einer einzigen Ergebnismenge, die alle Zeilen enthält, die zu allen Abfragen in der Union gehören.

Mithilfe von JOINs können Sie Daten aus zwei oder mehr Tabellen basierend auf logischen Beziehungen zwischen den Tabellen abrufen. Verknüpfungen geben an, wie SQL Daten aus einer Tabelle verwenden soll, um die Zeilen in einer anderen Tabelle auszuwählen.

Die UNION-Operation unterscheidet sich von der Verwendung von JOINs, die Spalten aus zwei Tabellen kombinieren.

UNION Beispiel:

SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]

Ausgabe:

Column1    Column2
-------------------
1          2
3          4

JOIN Beispiel:

SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId

Dadurch werden alle Zeilen aus beiden Tabellen ausgegeben, für die die Bedingung erfüllt a.Id = b.AFKIdist.

Kirtan
quelle
Join kann Daten aus einer * oder mehreren Tabellen abrufen. Nicht unbedingt zwei
Kennet Celeste
51

Möglicherweise sehen Sie für beide die gleichen schematischen Erklärungen, diese sind jedoch völlig verwirrend.

Für die UNION:

Geben Sie hier die Bildbeschreibung ein

Für JOIN:

Geben Sie hier die Bildbeschreibung ein

Java Main
quelle
9
Diese Bilder implizieren, dass FULL OUTER JOINdas das gleiche ist wie UNION, die Unterschiede haben
icc97
1
Diese Antwort weist darauf hin, dass diese Bilder verwirrend sind (welche IMO sie sind), aber dann nicht erklären, warum oder eine Klärung der ursprünglichen Frage bieten.
Josh D.
1
Jedes Bild mit Diagrammen erklärt die Situation perfekt. Es gibt kein einzelnes Bild, mit dem alle Diagramme zusammengeführt werden können. Das wird verwirrender sein.
Java Main
41

BEITRETEN:

Ein Join wird zum Anzeigen von Spalten mit demselben oder unterschiedlichen Namen aus verschiedenen Tabellen verwendet. In der angezeigten Ausgabe werden alle Spalten einzeln angezeigt. Das heißt, die Spalten werden nebeneinander ausgerichtet.

UNION:

Der UNION-Set-Operator wird zum Kombinieren von Daten aus zwei Tabellen verwendet, die Spalten mit demselben Datentyp enthalten. Wenn eine UNION ausgeführt wird, werden die Daten aus beiden Tabellen in einer einzelnen Spalte mit demselben Datentyp gesammelt.

Beispielsweise:

Siehe die beiden folgenden Tabellen:

Table t1
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2

Table t2
manufacturer_id manufacturer
1 ABC Gmbh
2 DEF Co KG

Um nun einen JOIN-Typ auszuführen, wird die Abfrage unten gezeigt.

SELECT articleno, article, manufacturer
FROM t1 JOIN t2 ON (t1.manufacturer_id =
t2.manufacturer_id);

articelno article manufacturer
1 hammer ABC GmbH
2 screwdriver DEF Co KG

Das ist ein Join.

UNION bedeutet, dass Sie Tabellen oder Ergebnismengen mit der gleichen Anzahl und Art von Spalten erstellen müssen und diese zusammen zu Tabellen / Ergebnismengen hinzufügen müssen. Schauen Sie sich dieses Beispiel an:

Table year2006
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2

Table year2007
Articleno article price manufacturer_id
1 hammer 6 $ 3
2 screwdriver 7 $ 4

SELECT articleno, article, price, manufactruer_id
FROM year2006
UNION
SELECT articleno, article, price, manufacturer_id
FROM year2007

articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
1 hammer 6 $ 3
2 screwdriver 7 $ 4
Ganesh Narayan Tharol
quelle
21

Das sind ganz andere Dinge.

Mit einem Join können Sie ähnliche Daten in verschiedenen Tabellen verknüpfen.

Eine Union gibt die Ergebnisse von zwei verschiedenen Abfragen als ein einziges Recordset zurück.

Adeshsuryan
quelle
9

Union lässt zwei Abfragen wie eine aussehen. Joins dienen zum Untersuchen von zwei oder mehr Tabellen in einer einzelnen Abfrageanweisung

James L.
quelle
3

Joins und Gewerkschaften können verwendet werden, um Daten aus einer oder mehreren Tabellen zu kombinieren. Der Unterschied liegt in der Kombination der Daten.

In einfachen Worten kombinieren Joins Daten zu neuen Spalten. Wenn zwei Tabellen miteinander verbunden sind, werden die Daten aus der ersten Tabelle in einem Satz von Spalten neben der Spalte der zweiten Tabelle in derselben Zeile angezeigt.

Gewerkschaften kombinieren Daten in neuen Zeilen. Wenn zwei Tabellen miteinander „verbunden“ sind, befinden sich die Daten aus der ersten Tabelle in einem Satz von Zeilen und die Daten aus der zweiten Tabelle in einem anderen Satz. Die Zeilen sind im gleichen Ergebnis.

VAHEED
quelle
1

Denken Sie daran, dass Union Ergebnisse zusammenführt ( SQL Server um sicher zu sein) (Feature oder Fehler?)

select 1 as id, 3 as value
union
select 1 as id, 3 as value

ID, Wert

1,3

select * from (select 1 as id, 3 as value) t1 inner join (select 1 as id, 3 as value) t2 on t1.id = t2.id

ID, Wert, ID, Wert

1,3,1,3

MonsterMagnet
quelle
6
Dies entspricht dem ANSI-Standard. UNION ALL führt die Ergebnisse nicht zusammen
vzczc
1
Siehe auch UNIONvs UNION ALL stackoverflow.com/questions/49925/…
Jaider
0

1. Die SQL Joins-Klausel wird verwendet, um Datensätze aus zwei oder mehr Tabellen in einer Datenbank zu kombinieren. Ein JOIN ist ein Mittel zum Kombinieren von Feldern aus zwei Tabellen unter Verwendung gemeinsamer Werte.

2. Der SQL UNION-Operator kombiniert das Ergebnis von zwei oder mehr SELECT-Anweisungen. Jede SELECT-Anweisung innerhalb der UNION muss dieselbe Anzahl von Spalten haben. Die Spalten müssen auch ähnliche Datentypen haben. Außerdem müssen die Spalten in jeder SELECT-Anweisung in derselben Reihenfolge sein.

Zum Beispiel: Kunden in Tabelle 1 / Bestellungen in Tabelle 2

innere Verbindung:

ID, NAME, BETRAG, DATUM AUSWÄHLEN

VON KUNDEN


INNERE BEITRÄGE


ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Union:

ID, NAME, BETRAG, DATUM AUSWÄHLEN


VON KUNDEN


LINKS BEITRETEN


ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID

UNION

WÄHLEN SIE ID, NAME, BETRAG, DATUM VON KUNDEN


RECHTS BEITRETEN


ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Ian
quelle
0

Ussing UNION

UNION kombiniert die Ergebnisse von zwei oder mehr Abfragen zu einer einzigen Ergebnismenge, die alle Zeilen enthält, die zu allen Abfragen in der Union gehören.

UNION Beispiel:
SELECT 121 AS [Spalte1], 221 AS [Spalte2]
UNION
SELECT 321 AS [Spalte1], 422 AS [Spalte2]
Ausgabe:

Spalte1 Spalte2
-------------------
121 221
321 422

Ussing JOINs

JOINs können Sie Daten aus zwei oder mehr Tabellen basierend auf logischen Beziehungen zwischen den Tabellen abrufen.

JOIN Beispiel:
SELECT a.Column1, b.Column2 FROM TblA a INNER JOIN TblB b ON a.Id = b.id.

user6341745
quelle
-1

In der Zusammenfassung sind sie insofern ähnlich, als zwei Tabellen oder Ergebnismengen kombiniert werden, aber UNION dient wirklich dazu, Ergebnismengen mit der GLEICHEN ANZAHL DER SPALTEN mit den SPALTEN MIT ÄHNLICHEN DATENTYPEN zu kombinieren. Die STRUKTUR ist dieselbe, es werden nur neue Zeilen hinzugefügt.

In Joins können Sie Tabellen / Ergebnismengen mit jeder möglichen Struktur kombinieren, einschließlich eines kartesischen Joins, bei dem KEINE gemeinsam genutzten / ähnlichen Spalten vorhanden sind.

danbk99
quelle
-1

Der UNION-Operator dient nur zum Kombinieren von zwei oder mehr SELECT-Anweisungen.

Während JOIN zum Auswählen von Zeilen aus jeder Tabelle dient, entweder nach der inneren, äußeren, linken oder rechten Methode.

Siehe hier und hier . Es gibt eine bessere Erklärung mit Beispielen.

Nishad Up
quelle
-1

Die Vereinigungsoperation ist das kombinierte Ergebnis des vertikalen Aggregats der Zeilen, die Vereinigungsoperation ist das kombinierte Ergebnis des horizontalen Aggregats der Spalten.

R.Baldha
quelle
-3

Ich stelle mir den allgemeinen Unterschied gerne so vor:

  • JOINS Join-Tabellen
  • UNION (et all) kombiniert Abfragen.
laurie
quelle
1
Dies wirft die Frage auf - Join wird als "Join" und Union als unerklärliche "Combines" bezeichnet. Was denkst du, was du über andere hochgewählte 10-jährige Antworten hinaus hinzufügen würdest, die dies "nützlich" machen? (Rhetorisch.) Siehe den Mouseover-Text für den Abstimmungspfeil.
philipxy