Was ist der Unterschied zwischen LEFT JOIN
y LEFT OUTER JOIN
?
Völlig richtig. OUTER ist aus Gründen der ANSI-92-Kompatibilität erlaubt.
Was ist der Unterschied zwischen LEFT JOIN
y LEFT OUTER JOIN
?
Wie in der Dokumentation angegeben: FROM (Transact-SQL) :
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Das Schlüsselwort OUTER
ist als optional gekennzeichnet (in eckigen Klammern). In diesem speziellen Fall ist es egal, ob Sie OUTER
oder nicht, macht keinen Unterschied. Beachten Sie, dass die anderen Elemente der Verknüpfungsklausel zwar ebenfalls als optional gekennzeichnet sind, die sie aus se einen Unterschied machen.
Zum Beispiel wird der gesamte Typenteil der JOIN
Klausel ist optional, in diesem Fall ist der Standardwert INNER
wenn Sie nur angeben JOIN
. Mit anderen Worten: Das ist legal:
SELECT *
FROM A JOIN B ON A.X = B.Y
Hier finden Sie eine Liste gleichwertiger Syntaxen:
A LEFT JOIN B A LEFT OUTER JOIN B
A RIGHT JOIN B A RIGHT OUTER JOIN B
A FULL JOIN B A FULL OUTER JOIN B
A INNER JOIN B A JOIN B
Schauen Sie sich auch die Antwort an, die ich auf diese andere SO-Frage hinterlassen habe: SQL left join vs. mehrere Tabellen in der FROM-Zeile? .
@LasseV.Karlsen wäre es nicht besser, eine INNER JOIN
auf der rechten Seite und nur JOIN
auf der linken Seite in der Liste der Äquivalente?
@LasseV.Karlsen Ich meinte nur, dass die linke Seite die Kurzform und die rechte Seite die erweiterte Form hat. Ich dachte, es wäre kohärent, wenn Sie das Gleiche für JOIN
s auch.
Um Ihre Frage zu beantworten Es gibt keinen Unterschied zwischen LEFT JOIN und LEFT OUTER JOIN, sie sind genau dasselbe das heißt...
INNER JOIN - holt Daten ab, wenn sie in beiden Tabellen vorhanden sind.
OUTER JOIN sind von 3 Typen:
LEFT OUTER JOIN
- holt Daten ab, wenn sie in der linken Tabelle vorhanden sind.RIGHT OUTER JOIN
- holt Daten ab, wenn sie in der richtigen Tabelle vorhanden sind.FULL OUTER JOIN
- holt Daten ab, wenn sie in einer der beiden Tabellen vorhanden sind.CROSS JOIN tut, wie der Name schon sagt, Folgendes [n X m]
die alles mit allem verbindet.
Ähnlich dem Szenario, in dem wir einfach die Tabellen für die Verknüpfung auflisten (in der FROM
Klausel des SELECT
Anweisung), wobei sie durch Kommata getrennt werden.
Zu beachtende Punkte:
JOIN
dann ist es standardmäßig ein INNER JOIN
.OUTER
Verbindung muss sein LEFT
| RIGHT
| FULL
kann man nicht einfach sagen OUTER JOIN
.OUTER
Schlüsselwort und sagen Sie einfach LEFT JOIN
o RIGHT JOIN
o FULL JOIN
.Für diejenigen, die sich diese besser vorstellen wollen, sei auf diesen Link verwiesen: Eine visuelle Erläuterung von SQL-Joins
Sehr gute Antwort. Es wird klarer, wenn Sie sagen: "LEFT OUTER JOIN - holt alle Daten aus der linken Tabelle mit passenden Daten aus der rechten, wenn voreingestellt." für 2.1 (und ähnliche Änderung für 2.2)
Sie können auch eine Kreuzverknüpfung durchführen, indem Sie einfach "select * from TableA,TableB" eingeben.
Es wäre schön, wenn Sie einen Hinweis oder eine Erklärung hinzufügen würden, warum die OUTER
ist fakultativ.
Left Join
y Left Outer Join
sind eins und die dieselbe . Ersteres ist die Kurzform für Letzteres. Das Gleiche gilt für die Right Join
y Right Outer Join
Beziehung. Die Demonstration soll die Gleichheit veranschaulichen. Arbeitsbeispiele für jede Abfrage wurden bereitgestellt über SQL-Gefiedel . Mit diesem Tool können Sie die Abfrage direkt bearbeiten.
Gegeben
Linke Fuge y Linke äußere Verbindung
Ergebnisse
Rechts Verbinden y Rechter äußerer Join
Ergebnisse
Ich bin ein PostgreSQL DBA, soweit ich den Unterschied zwischen äußeren und nicht-äußeren Joins verstehen konnte, ist dies ein Thema, das überall im Internet diskutiert wird. Bis heute habe ich nie einen Unterschied zwischen diesen beiden gesehen; Also bin ich weiter gegangen und habe versucht, den Unterschied zwischen diesen zu finden. Am Ende habe ich die gesamte Dokumentation dazu gelesen und die Antwort darauf gefunden,
Wenn Sie also in der Dokumentation nachsehen (zumindest in PostgreSQL), können Sie diesen Satz finden:
Mit anderen Worten,
LEFT JOIN
y LEFT OUTER JOIN
SIND DIE GLEICHEN
RIGHT JOIN
y RIGHT OUTER JOIN
SIND DIE GLEICHEN
Ich hoffe, dass es ein Beitrag für diejenigen sein kann, die noch auf der Suche nach der Antwort sind.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
342 Stimmen
Keine! Die
OUTER
Schlüsselwort ist optional.30 Stimmen
Venn-Diagramme sind für die Beantwortung dieser Frage nicht geeignet. Die Antwort auf diese Frage lautet Keine . Siehe den ersten Kommentar.
7 Stimmen
Venn-Diagramme veranschaulichen die Differenz der Ausgangszeilen para Sonderfälle de innere vs. äußere Verknüpfung . Wenn keine Nullen oder doppelten Zeilen eingegeben werden (so können wir eine Tabelle als eine Menge von zeilenbewerteten Werten betrachten und normale mathematische Gleichheit verwenden) dann enthalten die linken und rechten Kreise die Ausgabetabellen/-mengen der linken und rechten Verknüpfung . Wenn jedoch Nullen oder doppelte Zeilen eingegeben werden, ist es so schwierig zu erklären, woraus die Kreise bestehen und wie sich diese Kreise zu den Ein- und Ausgabetabellen/-taschen verhalten, dass Venn-Diagramme nicht hilfreich sind. Siehe meine Kommentare zu anderen Missbräuchen des Venn-Diagramms hier.
0 Stimmen
Diejenigen, die hierher kamen, um
PostgreSQL
ist die Antwort dieselbe: Keine ! Die das Wort OUTER ist optional