Question

Ces deux jointures me donnera les mêmes résultats:

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

vs

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

Y at-il une différence entre les déclarations de performance ou autrement?

-t-il entre les différentes implémentations diffèrent SQL?

Était-ce utile?

La solution

Ils sont fonctionnellement équivalents, mais INNER JOIN peut être un peu plus clair à lire, surtout si la requête a d'autres types de jointure (à savoir LEFT ou RIGHT ou CROSS) inclure.

Autres conseils

Non, il n'y a pas de différence, pur sucre syntaxique .

jointure = join

  

INNER JOIN est par défaut si vous ne spécifiez pas le type lorsque vous utilisez le mot JOIN.

     

Vous pouvez également utiliser LEFT OUTER JOIN ou RIGHT OUTER JOIN, auquel cas le mot OUTER est facultatif,   ou vous pouvez spécifier CROSS JOIN.

ou

  

Pour une jointure interne, la syntaxe est:

     

SELECT ...
  DE TableA
  [INNER] JOIN TableB

     

(en d'autres termes, le mot-clé "INNER" est option - résultats sont les mêmes   avec ou sans)

De même avec OUTER JOINs, le mot "OUTER" est facultative. Il est le mot-clé LEFT ou RIGHT qui fait la JOIN un "OUTER" JOIN.

Cependant, pour une raison que je l'utilise toujours "OUTER" comme dans LEFT OUTER JOIN et jamais LEFT JOIN, mais je ne l'utilise INNER JOIN, mais je viens d'utiliser "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
  

-t-il entre les différentes implémentations diffèrent SQL?

Oui, Microsoft Access ne permet pas seulement join. Il nécessite inner join .

Comme les autres réponses indiquent déjà il n'y a pas de différence dans votre exemple.

Le bit correspondant de la grammaire est documenté ici

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

Affichage que tous sont facultatifs. La page précise en outre que

  

Spécifie INNER toutes les paires de lignes sont renvoyées. Discards   lignes inégalés des deux tables. Si aucun type de jointure est spécifié, cette   est la valeur par défaut .

La grammaire fait également indiquer qu'il ya un moment où le INNER est si nécessaire. Lorsque vous spécifiez un indicateur de jointure.

Voir l'exemple ci-dessous

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;

 ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top