Frage Unterschied zwischen JOIN und INNER JOIN


Beide Joins geben 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 sonst?

Unterscheidet es sich zwischen verschiedenen SQL-Implementierungen?


772
2018-02-19 14:47


Ursprung


Antworten:


Sie sind funktional gleichwertig, aber INNER JOIN kann ein bisschen klarer zu lesen sein, insbesondere wenn die Abfrage andere Join-Typen hat (d. h. LEFT oder RIGHT oder CROSS) darin enthalten.


850
2018-02-19 14:50



Einfach tippen JOIN führt ein INNER JOIN standardmäßig.

Für alle anderen ist ein Bild manchmal mehr wert als Hunderte von Wörtern:

Enter image description here

Bild mit freundlicher Genehmigung von Code-Projekt.



644
2017-10-28 22:56



Nein, es gibt keinen Unterschied, rein syntethischer Zucker.


207
2018-02-19 14:48



INNER JOIN = JOIN:

INNER JOIN ist der Standard, wenn Sie nicht angeben der Typ, wenn Sie das Wort JOIN verwenden.

Sie können auch LEFT OUTER JOIN oder RIGHT OUTER JOIN verwenden. In diesem Fall ist das Wort OUTER optional.   oder Sie können CROSS JOIN angeben.

ODER

Für einen inneren Join lautet die Syntax:

WÄHLEN ...
  Von TabelleA
  [INNER] JOIN TabelleB

(Mit anderen Worten, das Schlüsselwort "INNER" ist wahlweise - Die Ergebnisse sind gleich   mit oder ohne es)


115
2018-02-28 08:23



Ähnlich mit OUTER JOINs, das Wort "OUTER" es ist optional. Es ist das LEFT oder RIGHT Stichwort, das das macht JOIN ein "OUTER" JOIN.

Aber aus irgendeinem Grund benutze ich immer "OUTER" wie in LEFT OUTER JOIN und niemals LEFT JOIN, aber ich benutze nie INNER JOIN, aber ich benutze es einfach "JOIN":

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

44
2018-02-19 15:09



Unterscheidet es sich zwischen verschiedenen SQL-Implementierungen?

Ja, Microsoft Access erlaubt nicht nur join. Es benötigt inner join.


40
2018-05-15 13:33



Wie die anderen Antworten schon sagen, gibt es in Ihrem Beispiel keinen Unterschied.

Das relevante Grammatikstück ist dokumentiert hier

<join_type> ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
    JOIN

Zeige, dass alle optional sind. Die Seite verdeutlicht das weiter

INNER Gibt an, dass alle übereinstimmenden Zeilenpaare zurückgegeben werden. Verwirft   nicht übereinstimmende Zeilen von beiden Tabellen. Wenn kein Join-Typ angegeben ist, dies   ist der Standardwert.

Die Grammatik zeigt auch an, dass es eine Zeit gibt, in der die INNER  ist erforderlich, obwohl. Wenn ein Join-Hinweis angegeben wird.

Siehe das Beispiel unten

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;

enter image description here


21
2017-08-02 16:38