tablas - left join sql
Diferencia entre JOIN y INNER JOIN (7)
Estas dos 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 diferentes implementaciones de SQL?
¿Difiere entre diferentes implementaciones de SQL?
Sí, Microsoft Access no permite solo join
. Requiere inner join
.
Como las otras respuestas ya indican, no hay diferencia en tu ejemplo.
El bit relevante de gramática se documenta aquí.
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Mostrando que todos son opcionales. La página aclara además que
INNER
Especifica que se devuelven todos los pares de filas coincidentes. Descarta las filas no coincidentes de ambas tablas. Cuando no se especifica ningún tipo de unión, este es el valor predeterminado .
La gramática también indica que hay una vez que se requiere el INNER
. Al especificar una sugerencia de combinación.
Vea 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;
De manera similar con OUTER JOINs
, la palabra "OUTER"
es opcional. Es la palabra clave LEFT
o RIGHT
que hace que la JOIN
sea JOIN
"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 simplemente 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
No, no hay diferencia, puro azúcar sintáctico .
Solo escribiendo JOIN
realiza un INNER JOIN
de forma predeterminada.
Para todos los demás, una imagen a veces vale más que cientos de palabras:
Imagen cortesía de Code Project .
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
) incluidos en ella.
INNER JOIN es el valor predeterminado si no especifica el tipo cuando usa la palabra JOIN.
También puede utilizar 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:
SELECCIONAR ...
De la tabla a
[INTERIOR] UNIRSE A TableB(en otras palabras, la palabra clave "INTERIOR" es opcional ; los resultados son los mismos con o sin ella)