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?

War es hilfreich?

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;

 image description hier

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top