Diferencia entre JOIN y INNER JOIN
-
05-09-2019 - |
Pregunta
Tanto estas uniones me dará 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 de rendimiento o de otro tipo?
¿Difiere entre las distintas aplicaciones de SQL?
Solución
Ellos son funcionalmente equivalentes, pero INNER JOIN
pueden ser un poco más claro de leer, especialmente si la consulta tiene otro tipos de combinación (es decir LEFT
o RIGHT
o CROSS
) incluidos en el mismo.
Otros consejos
No, no hay ninguna diferencia, pura azúcar sintáctico .
combinación interna = UNEN
INNER JOIN es la por defecto si no se especifica el tipo cuando se utiliza la palabra JOIN.
Puede también uso LEFT OUTER JOIN o RIGHT OUTER JOIN, en cuyo caso la palabra exterior es opcional, o puede especificar CROSS JOIN.
o
Para una combinación interna, la sintaxis es:
SELECT ...
Desde la Tabla
[INTERIOR] JOIN TableB(en otras palabras, la palabra clave "interior" es opcional - los resultados son los mismos con o sin ella)
Lo mismo ocurre con OUTER JOINs
, la palabra "OUTER"
es opcional. Es la palabra clave o LEFT
RIGHT
que hace que el 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
, sino que sólo tiene que utilizar "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
¿Difiere entre las distintas aplicaciones de SQL?
Sí, Microsoft Access no permite simplemente join
. Se requiere inner join
.
Como las otras respuestas ya afirman que no hay diferencia en su ejemplo.
El bit correspondiente de la gramática es documentado aquí
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
mostrando que todos son opcionales. El anuncio Más aclara que
INNER
Especifica se devuelven todos los correspondientes pares de filas. Los descartes filas de ambas tablas sin igual. Cuando no se especifica tipo de combinación, esto es el valor predeterminado .
La gramática hace también indican que hay un momento en el que el INNER
es requerida sin embargo. Cuando se especifica una sugerencia de combinación.
Consulte el ejemplo siguiente
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;