right outer left inner entre ejemplos diferencia mysql sql join inner-join outer-join

mysql - outer - ¿Cuál es la diferencia entre INNER JOIN, LEFT JOIN, RIGHT JOIN y FULL JOIN?



outer join mysql (3)

Una cláusula SQL JOIN se utiliza para combinar filas de dos o más tablas, en función de un campo común entre ellas.

Hay diferentes tipos de combinaciones disponibles en SQL:

INNER JOIN : devuelve filas cuando hay una coincidencia en ambas tablas.

LEFT JOIN : devuelve todas las filas de la tabla izquierda, incluso si no hay coincidencias en la tabla derecha.

JUNTA DERECHA : devuelve todas las filas de la tabla derecha, incluso si no hay coincidencias en la tabla izquierda.

FULL JOIN : combina los resultados de las combinaciones externas izquierda y derecha.

La tabla combinada contendrá todos los registros de ambas tablas y completará NULL para las coincidencias faltantes en cada lado.

SELF JOIN : se utiliza para unir una tabla a sí misma como si la tabla fuera dos tablas, renombrando temporalmente al menos una tabla en la declaración SQL.

CARTESIAN JOIN : devuelve el producto cartesiano de los conjuntos de registros de las dos o más tablas unidas.

Podemos tomar cada una de las primeras cuatro combinaciones en Detalles:

Tenemos dos tablas con los siguientes valores.

TablaA

id firstName lastName ....................................... 1 arun prasanth 2 ann antony 3 sruthy abc 6 new abc

Tabla b

id2 age Place ................ 1 24 kerala 2 24 usa 3 25 ekm 5 24 chennai

.................................................. ..................

UNIR INTERNAMENTE

Nota : da la intersección de las dos tablas, es decir, las filas que tienen en común en Tabla A y Tabla B

Sintaxis

SELECT table1.column1, table2.column2... FROM table1 INNER JOIN table2 ON table1.common_field = table2.common_field;

Aplícalo en nuestra tabla de muestra:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA INNER JOIN TableB ON TableA.id = TableB.id2;

El resultado será

firstName lastName age Place .............................................. arun prasanth 24 kerala ann antony 24 usa sruthy abc 25 ekm

UNIRSE IZQUIERDO

Nota : proporcionará todas las filas seleccionadas en la Tabla A, más cualquier fila seleccionada común en la TablaB.

Sintaxis

SELECT table1.column1, table2.column2... FROM table1 LEFT JOIN table2 ON table1.common_field = table2.common_field;

Aplícalo en nuestra tabla de muestra:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA LEFT JOIN TableB ON TableA.id = TableB.id2;

Resultado

firstName lastName age Place ............................................................................... arun prasanth 24 kerala ann antony 24 usa sruthy abc 25 ekm new abc NULL NULL

Unirse correctamente

Nota : proporcionará todas las filas seleccionadas en TableB, más cualquier fila seleccionada común en TableA.

Sintaxis

SELECT table1.column1, table2.column2... FROM table1 RIGHT JOIN table2 ON table1.common_field = table2.common_field;

Aplícalo en nuestra tabla de muestra:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA RIGHT JOIN TableB ON TableA.id = TableB.id2;

Resultado

firstName lastName age Place ............................................................................... arun prasanth 24 kerala ann antony 24 usa sruthy abc 25 ekm NULL NULL 24 chennai

ÚNETE COMPLETO

Nota : Devolverá todos los valores seleccionados de ambas tablas.

Sintaxis

SELECT table1.column1, table2.column2... FROM table1 FULL JOIN table2 ON table1.common_field = table2.common_field;

Aplícalo en nuestra tabla de muestra:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA FULL JOIN TableB ON TableA.id = TableB.id2;

Resultado

firstName lastName age Place ............................................................................... arun prasanth 24 kerala ann antony 24 usa sruthy abc 25 ekm new abc NULL NULL NULL NULL 24 chennai

Hecho interesante

Para INNER se une el pedido no importa.

Para las combinaciones EXTERNAS (IZQUIERDA, DERECHA o COMPLETA), el orden es importante

Mejor ir a este Link . Le dará detalles interesantes sobre el orden de unión.

Esta pregunta ya tiene una respuesta aquí:

¿Cuál es la diferencia entre INNER JOIN , LEFT JOIN , RIGHT JOIN y FULL JOIN en MySQL ?



INNER JOIN obtiene todos los registros que son comunes entre ambas tablas en función de la clave externa

LEFT JOIN obtiene todos los registros de la tabla vinculada IZQUIERDA pero si ha seleccionado algunas columnas de la tabla DERECHA, si no hay registros relacionados, estas columnas contendrán NULL

RIGHT JOIN es como el anterior pero obtiene todos los registros en la tabla RIGHT

FULL JOIN obtiene todos los registros de ambas tablas y coloca NULL en las columnas donde los registros relacionados no existen en la tabla opuesta