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 ?
Leer este artículo original en The Code Project te ayudará mucho: Representación visual de las uniones SQL .
También puedes ver este post: SERVIDOR SQL - Mejor rendimiento - ¿IZQUIERDA ÚNICA o NO EN? .
Encuentra el original en: Diferencia entre ÚNETE y ÚNICAMENTE ÚNASE 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