Unión completa en MySQL

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.

¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
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