Pregunta Diferencia entre JOIN y INNER JOIN


Ambas uniones me darán los mismos resultados:

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

vs

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

¿Hay alguna diferencia entre las declaraciones en el rendimiento o de otra manera?

¿Difiere entre las diferentes implementaciones de SQL?


772
2018-02-19 14:47


origen


Respuestas:


Son funcionalmente equivalentes, pero INNER JOIN puede ser un poco más claro de leer, especialmente si la consulta tiene otros tipos de unión (es decir LEFT o RIGHT o CROSS) incluido en ella.


850
2018-02-19 14:50



Solo escribiendo JOIN realiza un INNER JOIN por defecto.

Para todos los demás, una imagen a veces vale más que cientos de palabras:

Enter image description here

Imagen cortesía de Proyecto de código.



644
2017-10-28 22:56



No, no hay diferencia, puro azúcar sintáctica.


207
2018-02-19 14:48



INNER JOIN = JOIN:

INNER JOIN es el predeterminado si no especifica el tipo cuando usas la palabra UNIRSE.

También puede usar LEFT OUTER JOIN o RIGHT OUTER JOIN, en cuyo caso la palabra OUTER es opcional,   o puede especificar CROSS JOIN.

O

Para una unión interna, la sintaxis es:

SELECCIONE ...
  DESDE TableA
  [INNER] ÚNETE a TableB

(En otras palabras, la palabra clave "INTERIOR" es Opcional - los resultados son los mismos   con o sin él)


115
2018-02-28 08:23



Del mismo modo con OUTER JOINs, la palabra "OUTER" es opcional. Es el LEFT o RIGHT palabra clave que hace que JOIN un "OUTER" JOIN.

Sin embargo, por alguna razón siempre uso "OUTER" como en LEFT OUTER JOIN y nunca LEFT JOIN, pero nunca uso INNER JOIN, pero mejor uso "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



¿Difiere entre las diferentes implementaciones de SQL?

Sí, acceso Microsoft no permite solo join. Requiere inner join.


40
2018-05-15 13:33



Como las otras respuestas ya dicen, no hay diferencia en su ejemplo.

El fragmento de gramática relevante es documentado aquí

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

Mostrando que todos son opcionales La página aclara más que

INNER Especifica todos los pares de filas coincidentes que se devuelven. Descartes   filas sin coincidencia de ambas tablas. Cuando no se especifica ningún tipo de unión, esto   es el predeterminado.

La gramática también indica que hay una vez donde INNER  es requerido sin embargo. Al especificar una sugerencia de unión.

Ver el ejemplo a continuación

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