in

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

apple touch icon@2

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

Hay diferentes tipos de combinaciones disponibles en SQL:

UNIR INTERNAMENTE: devuelve filas cuando hay una coincidencia en ambas tablas.

ÚNETE A LA IZQUIERDA: devuelve todas las filas de la tabla de la izquierda, incluso si no hay coincidencias en la tabla de la derecha.

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

ÚNETE COMPLETO: combina los resultados de las combinaciones externas izquierda y derecha.

La tabla unida contendrá todos los registros de ambas tablas y completará los NULL para las coincidencias que faltan en cualquier lado.

AUTO UNIRSE: une una tabla a sí misma como si fueran dos tablas, cambiando temporalmente el nombre de al menos una tabla en la instrucción SQL.

UNIÓN CARTESIANA: devuelve el producto cartesiano de los conjuntos de registros de las dos o más tablas unidas.

Podemos tomar cada cuatro primeras uniones en Detalles:

Tenemos dos tablas con los siguientes valores.

TableA

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

TableB

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 TableA y TableB tienen en común.

Sintaxis

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

Aplíquelo en nuestra tabla de muestra:

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

Resultado

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

ÚNETE A LA IZQUIERDA

Nota : proporciona todas las filas seleccionadas en la TablaA, 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íquelo 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 : da 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íquelo 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 : devuelve 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íquelo 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

Dato interesante

  • Para INNER se une, el orden no importa.
  • Para las uniones EXTERIORES (IZQUIERDA, DERECHA o COMPLETA), el orden importa.

Es mejor ir a comprobar esto Enlace le dará detalles interesantes sobre el orden de unión.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ruby – Bucles

gfg 200x200 min

Diferencia entre strlen () y sizeof () para cadena en C