Unión completa en MySQL

Preet Sanghavi 29 marzo 2022
Unión completa en MySQL

Este tutorial tiene como objetivo explorar cómo realizar una unión completa o una unión externa completa en MySQL.

Una combinación externa completa se usa para fusionar o combinar todos los datos de dos tablas separadas. Por ejemplo, considere que tenemos dos tablas llamadas student_id y student_name con una columna común.

Podemos fusionar estas dos tablas por completo en MySQL haciendo coincidir los valores de la columna común junto con una UNION, LEFT JOIN y RIGHT JOIN. Si bien este proceso parece complicado a primera vista, entendámoslo en pasos.

Antes de empezar, crearemos un conjunto de datos ficticio creando una tabla student_details con unas pocas filas.

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName) 
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Geo","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

Para ver las entradas en los datos, usamos el siguiente código.

SELECT * FROM student_details;

Producción :

stu_id	stu_firstName	stu_lastName
1	      Preet	        Sanghavi
2	      Rich	        John
3	      Veron	        Brow
4	      Geo	        Jos
5	      Hash	        Shah
6	      Sachin	    Parker
7	      David	        Miller

Necesitamos otra tabla llamada student_marks que contenga las notas de cada alumno correspondientes al stu_id. Podemos hacer una tabla de este tipo usando la siguiente consulta.

-- create the table student_marks
CREATE TABLE student_marks(
  stu_id int,
  stu_marks int
);
-- insert rows to the table student_marks
INSERT INTO student_marks(stu_id,stu_marks) 
 VALUES(1,10),
 (2,20),
 (3,30),
 (4,7),
 (5,9),
 (6,35),
 (7,15);

Podemos visualizar esta tabla con la ayuda de la siguiente consulta.

SELECT * from student_marks;

Producción :

stu_id  stu_marks
1		10
2		20
3		30
4		7
5		9
6		35
7		15

Apuntemos a hacer una unión externa completa en las tablas student_details y student_marks con stu_id como la columna común en ambas tablas.

Declaración FULL JOIN en MySQL

La sintaxis básica de la técnica FULL OUTER JOIN es la siguiente.

SELECT * FROM table_1
LEFT JOIN table_2 ON table_1.id = table_2.id
UNION
SELECT * FROM table_1
RIGHT JOIN table_2 ON table_1.id = table_2.id

Como se ve en la consulta anterior, nuestro objetivo es unir las dos tablas denominadas table_1 y table_2 en función de la columna id común con la ayuda de un left join y un right join.

Podemos usar la siguiente consulta para resolver nuestro problema con las tablas student_details y student_marks.

-- Full Join using UNION
SELECT * FROM student_details
LEFT JOIN student_marks ON student_details.stu_id = student_marks.stu_id
UNION
SELECT * FROM student_details
RIGHT JOIN student_marks ON student_details.stu_id = student_marks.stu_id

Como se ve en el código anterior, estamos fusionando ambas tablas en consideración en función de la columna stu_id. La salida del código anterior es la siguiente.

stu_id	stu_firstName	stu_lastName  stu_id	stu_marks
1		Preet			Sanghavi		1		10
2		Rich			John			2		20
3		Veron			Brow			3		30
4		Geo				Jos				4		7
5		Hash			Shah			5		9
6		Sachin			Parker			6		35
7		David			Miller			7		15

Como se ve en el bloque de salida, los stu_marks se asignan correctamente a cada estudiante en función del stu_id después de la unión externa completa.

Nota: Podemos evitar tener la columna duplicada stu_id especificando los nombres exactos de las columnas a unir con la ayuda de left join y right join. Esto crearía una unión externa sin filas duplicadas debido a la cláusula UNION de nuestra consulta.

Por lo tanto, con la ayuda de la sentencia UNION junto con un left join y un right join en dos tablas diferentes, podemos crear eficientemente una unión externa completa en MySQL sin ninguna fila duplicada.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

Artículo relacionado - MySQL Query