Unterschied zwischen left join und right join in SQL Server
Weiß ich über joins in SQL Server.
Zum Beispiel. es gibt zwei Tabellen, Tabelle1, Tabelle2,.
Gibt die Struktur einer Tabelle sind folgende.
create table Table1 (id int, Name varchar (10))
create table Table2 (id int, Name varchar (10))
Tabelle1 Daten wie folgt:
Id Name
-------------
1 A
2 B
Tabelle2 Daten wie folgt:
Id Name
-------------
1 A
2 B
3 C
Wenn ich auszuführen, die unten genannten SQL-statements, beide Ausgänge die gleiche
select *
from Table1
left join Table2 on Table1.id = Table2.id
select *
from Table2
right join Table1 on Table1.id = Table2.id
Bitte erläutern Sie den Unterschied zwischen left und right join in der obigen sql-Anweisungen.
InformationsquelleAutor der Frage Pankaj Agarwal | 2011-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
und
sind in der Tat völlig austauschbar. Versuchen Sie jedoch
Table2 left join Table1
(oder den identischen paar,Table1 right join Table2
) zu sehen, ein Unterschied. Diese Abfrage sollten Sie mehr Zeilen, da die Tabelle2 enthält eine Zeile mit einer id die nicht vorhanden ist in "Tabelle1".InformationsquelleAutor der Antwort Péter Török
Codeproject hat dieses Bild, das erklärt die einfachen Grundlagen von SQL-joins, entnommen aus: http://www.codeproject.com/KB/database/Visual_SQL_Joins.aspx
InformationsquelleAutor der Antwort Daan Timmer
Tabelle, aus der Sie Daten aufnehmen, ist "LINKS".
Tisch, an dem Sie den Beitritt ist "RECHT".
LEFT JOIN: Nehmen Sie alle Elemente aus der linken Tabelle UND (nur) passende Artikel aus der rechten Tabelle.
RIGHT JOIN: Nehmen Sie alle Elemente aus der rechten Tabelle UND (nur) passende Elemente aus der linken Tabelle.
Also:
gibt:
aber:
gibt:
du hattest Recht-Beitritt Tabelle mit weniger Zeilen in Tabelle mit mehreren Zeilen
UND
wieder Links-Beitritt Tabelle mit weniger Zeilen in Tabelle mit mehreren Zeilen
Versuchen:
InformationsquelleAutor der Antwort vbole
Den Tisch in der
from
in diesem BeispieltableA
ist auf der linken Seite der relation.Also, wenn Sie wollen, um alle Zeilen aus der linken Tabelle (
tableA
), auch wenn es keine übereinstimmung in der rechten Tabelle (tableB
), verwenden Sie die "left join".Und wenn Sie wollen, um alle Zeilen aus der rechten Tabelle (
tableB
), auch wenn es keine übereinstimmungen in der linken Tabelle (tableA
), verwenden Sie dasright join
.Somit die folgende Abfrage ist gleichwertig, die oben verwendet.
InformationsquelleAutor der Antwort Moraes
Sie scheinen zu Fragen: "Wenn ich schreiben können ein
RIGHT OUTER JOIN
mitLEFT OUTER JOIN
syntax warum dann einRIGHT OUTER JOIN
syntax überhaupt?" Ich denke, die Antwort auf diese Frage ist, weil die Designer der Sprache wollte nicht, dass solch eine Beschränkung auf Benutzer (und ich denke, Sie würde haben wurden kritisiert, wenn Sie es Taten), die Benutzer zwingen, ändern Sie die Reihenfolge der Tabellen in derFROM
Klausel in einigen Fällen, wenn lediglich die änderung der join-Typ.InformationsquelleAutor der Antwort onedaywhen
Ihre beiden Aussagen sind äquivalent.
Meisten Menschen verwenden nur
LEFT JOIN
da scheint es intuitiver, und es ist universal syntax - ich glaube nicht, dass alle RDBMS unterstützenRIGHT JOIN
.InformationsquelleAutor der Antwort JNK
(INNERER) JOIN: die Datensätze Zurückgibt, die in beiden Tabellen übereinstimmende Werte.
LEFT (OUTER) JOIN: gib alle Datensätze aus der linken Tabelle, und die übereinstimmenden Datensätze aus der rechten Tabelle.
RIGHT (OUTER) JOIN: gib alle Datensätze aus der rechten Tabelle, und die übereinstimmenden Datensätze aus der linken Tabelle.
FULL (OUTER) JOIN: alle Datensätze Zurück, wenn es eine übereinstimmung im linken oder rechten Tabelle
Zum Beispiel, nehmen wir an, wir haben zwei Tabellen mit folgenden Unterlagen:
Inner Join
Syntax
Wenden Sie es in Ihrem Beispiel-Tabelle:
Ergebnis:
Left Join
Wenden Sie es in Ihrem Beispiel-Tabelle
Ergebnis:
Right Join
Syntax:
Wenden Sie es in Ihrem samole Tabelle:
Ergebnis bw:
Full Join
Syntax:
Wenden Sie es in Ihrem samp[le Tabelle:
Ergebnis:
Für INNER joins die Reihenfolge spielt keine Rolle
For (LEFT, RIGHT oder FULL) OUTER-joins,die Reihenfolge egal
Finden Sie Mehr unter w3schools
InformationsquelleAutor der Antwort Sushank Pokharel
Fühle ich, können wir verlangen, dass
AND
Zustand, inwhere
Ziffer der letzten Zahl desOuter Excluding JOIN
so dass wir das gewünschte ErgebnisA Union B Minus A Interaction B
.Ich fühle Abfrage aktualisiert werden muss, um
Wenn wir
OR
, dann bekommen wir alle die Ergebnisse vonA Union B
InformationsquelleAutor der Antwort vinsinraw
select *
aus Tabelle1
left join Tabelle2 on Tabelle1.id = Table2.id
In der ersten Abfrage Left join vergleicht linksseitige Tabelle "Tabelle1" zu rechtsseitige Tabelle Tabelle2.
In dem alle Eigenschaften der "Tabelle1" gezeigt werden wird, in der Erwägung, dass in Tabelle2 nur jene Eigenschaften angezeigt, in dem die Bedingung true.
select *
aus Tabelle2
right join Table1 on "Tabelle1".id = Table2.id
In der ersten Abfrage Right join vergleicht rechtsseitige Tabelle "Tabelle1" zu linksseitige Tabelle Tabelle2.
In dem alle Eigenschaften der "Tabelle1" gezeigt werden wird, in der Erwägung, dass in Tabelle2 nur jene Eigenschaften angezeigt, in dem die Bedingung true.
Beide Abfragen das gleiche Ergebnis, weil die Reihenfolge der Tabelle Erklärung in der Abfrage sind verschiedene wie erklären Sie "Tabelle1" und Tabelle2 in Links und rechts bzw. in erste left join - Abfrage, und auch das deklarieren "Tabelle1" und Tabelle2 in rechts und Links bzw. in zweiten right join Abfrage.
Dies ist der Grund, warum Sie werden immer das gleiche Ergebnis in beiden Abfragen. Also, wenn Sie wollen anderen Ergebnis führen diese beiden Abfragen jeweils
select *
aus Tabelle1
left join Tabelle2 on Tabelle1.id = Table2.id
select *
aus Tabelle1
right join Tabelle2 on Tabelle1.id = Table2.id
InformationsquelleAutor der Antwort Nisarg Shah
Select * from Table1 t1 Left Join Table2 t2 on t1.id=t2.id
Per definition: Left Join wählt alle Spalten erwähnt mit der "select" - Schlüsselwort aus der Tabelle 1 und die Spalten von Tabelle 2, die den Kriterien entspricht, nach der "auf" - Schlüsselwort.
Ähnlich,Durch definition: der Right Join wählt alle Spalten erwähnt mit der "select" - Schlüsselwort aus der Tabelle 2 und den Spalten von Tabelle 1, die den Kriterien entspricht, nach der "auf" - Schlüsselwort.
Unter Bezugnahme auf Ihre Frage, die id in beiden Tabellen sind im Vergleich mit allen benötigten Spalten geworfen werden in die Ausgabe. Also, die ids 1 und 2 gemeinsam sind, in der die Tabellen und als Ergebnis im Ergebnis haben Sie vier Spalten mit id und Namen Spalten von ersten und zweiten Tabellen um.
*select *
from Table1
left join Table2 on Table1.id = Table2.id
Obigen Ausdruck,es nimmt alle Datensätze (Zeilen) aus der Tabelle 1 und Spalten, mit passenden id aus Tabelle 1 und Tabelle 2, aus Tabelle 2.
select *
from Table2
right join Table1 on Table1.id = Table2.id**
Ebenfalls aus dem obigen Ausdruck,es nimmt alle Datensätze (Zeilen) aus der Tabelle 1 und Spalten, mit passenden id aus Tabelle 1 und Tabelle 2, aus Tabelle 2. (denken Sie daran, dies ist ein right join, so dass alle Spalten aus Tabelle2 und nicht von "Tabelle1" wird in Betracht gezogen werden).
InformationsquelleAutor der Antwort