Domanda

Entrambi questi si unisce mi darà gli stessi risultati:

SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK

vs

SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK

C'è qualche differenza tra le dichiarazioni in termini di prestazioni o di altro tipo?

si differenzia tra le diverse implementazioni di SQL?

È stato utile?

Soluzione

Sono funzionalmente equivalenti, ma INNER JOIN possono essere un po 'più chiaro da leggere, soprattutto se la query ha altri tipi di join (cioè LEFT o RIGHT o CROSS) incluso in esso.

Altri suggerimenti

No, non c'è alcuna differenza, pura zucchero sintattico .

INNER JOIN = ENTRA

  

INNER JOIN è il default se non si specifica il tipo quando si utilizza la parola JOIN.

     

È inoltre possibile utilizzare LEFT OUTER JOIN o join esterno destro, nel qual caso la parola esterna è opzionale,   oppure è possibile specificare CROSS JOIN.

o

  

Per un inner join, la sintassi è:

     

SELECT ...
  DA TableA
  [INNER] JOIN TableB

     

(in altre parole, la parola chiave "interiore" è opzionale - Risultati sono gli stessi   con o senza di essa)

Allo stesso modo con OUTER JOINs, la parola "OUTER" è opzionale. E 'la parola chiave LEFT o RIGHT che rende il JOIN un "OUTER" JOIN.

Tuttavia, per qualche motivo io uso sempre "OUTER" come in LEFT OUTER JOIN e mai LEFT JOIN, ma non ho mai utilizzare INNER JOIN, ma mi basta usare "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
  

si differenzia tra le diverse implementazioni di SQL?

Sì, Microsoft Access non consente solo join. Richiede inner join .

Come le altre risposte già stato non v'è alcuna differenza nel tuo esempio.

Il bit rilevante della grammatica è documentato qui

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

che mostra che tutti sono opzionali. La pagina inoltre chiarisce che

  

INNER Specifica tutte le coppie di righe vengono restituite. rigetti   le righe non corrispondenti di entrambe le tabelle. Quando nessun tipo di join è specificato, questo   è il default .

La grammatica fa anche indicare che c'è un tempo in cui la INNER è necessario però. Quando si specifica un hint di join.

Si veda l'esempio seguente

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;

 entrare descrizione dell'immagine qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top