Der Unterschied zwischen JOIN und INNER JOIN
-
05-09-2019 - |
Frage
Diese beiden verbindet gibt mir die gleichen Ergebnisse:
SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK
vs
SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK
Gibt es einen Unterschied zwischen den Aussagen in der Leistung oder auf andere Weise?
Gibt es zwischen den verschiedenen SQL-Implementierungen unterscheiden?
Lösung
Sie sind funktionell gleichwertig, aber INNER JOIN
können etwas klarer sein, besonders zu lesen, wenn die Abfrage andere Arten beitreten hat (das heißt LEFT
oder RIGHT
oder CROSS
), die in ihm.
Andere Tipps
Nein, es gibt keinen Unterschied, reine syntaktischen Zucker .
INNER JOIN = JOIN
INNER JOIN ist der Standard, wenn Sie nicht angeben die Art, wenn Sie das Wort JOIN verwenden.
Sie können auch LEFT OUTER JOIN oder RIGHT OUTER JOIN, wobei in diesem Fall das Wort OUTER ist optional, oder Sie können festlegen, CROSS JOIN.
oder
Für eine innere Verknüpfung, die Syntax ist:
SELECT ...
VON TableA
[INNER] JOIN TableB(in anderen Worten, die "innere" Schlüsselwort ist optional - Ergebnisse sind die gleichen mit oder ohne)
Ähnlich ist es mit OUTER JOINs
ist das Wort "OUTER"
optional. Es ist das LEFT
oder RIGHT
Schlüsselwort, das den JOIN
ein "OUTER" JOIN
macht.
Doch aus irgendeinem Grund immer ich "OUTER"
wie in LEFT OUTER JOIN
verwenden und nie LEFT JOIN
, aber ich habe nie INNER JOIN
verwenden, sondern nur "JOIN"
ich benutze:
SELECT ColA, ColB, ...
FROM MyTable AS T1
JOIN MyOtherTable AS T2
ON T2.ID = T1.ID
LEFT OUTER JOIN MyOptionalTable AS T3
ON T3.ID = T1.ID
Ist es unterscheiden sich zwischen den verschiedenen SQL-Implementierungen?
Ja, Microsoft Access erlauben nicht nur join
. Es erfordert inner join
.
Wie die anderen Antworten bereits angeben, gibt es keinen Unterschied in Ihrem Beispiel.
Das entsprechende Bit der Grammatik ist hier dokumentiert
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Zeigen, dass alle sind optional. Die Seite weiter verdeutlicht, dass
INNER
Gibt alle passenden Paare von Zeilen zurückgegeben werden. Verwirft unerreichte Zeilen aus beiden Tabellen. Wenn kein Join-Typ angegeben wird, diese der Standard ist.
Die Grammatik funktioniert zeigen auch, dass es eine Zeit, wo die INNER
ist obwohl erforderlich. Wenn Sie einen Verknüpfungshinweis angeben.
Siehe das Beispiel unter
CREATE TABLE T1(X INT);
CREATE TABLE T2(Y INT);
SELECT *
FROM T1
LOOP JOIN T2
ON X = Y;
SELECT *
FROM T1
INNER LOOP JOIN T2
ON X = Y;