▷ FULL JOIN con UNION 【 FULL OUTER JOIN 】 en MySQL
Comprendiendo el FULL OUTER JOIN en MySQL y SQL
Cuando trabajamos con bases de datos relacionales, la necesidad de combinar datos de múltiples tablas es muy común. En SQL, una de las opciones más poderosas para esto es el FULL OUTER JOIN. Sin embargo, en MySQL, este tipo de unión no está soportado de manera nativa. En este artículo, exploraremos qué es un FULL OUTER JOIN, cómo funciona en bases de datos SQL que lo admiten y cómo podemos simularlo en MySQL.
¿Qué es un FULL OUTER JOIN?
Un FULL OUTER JOIN es un tipo de unión en SQL que devuelve todas las filas de ambas tablas combinadas, mostrando coincidencias cuando existen y completando con NULL
cuando no hay correspondencia.
Ejemplo de FULL OUTER JOIN en SQL (PostgreSQL, SQL Server, Oracle)
SELECT *
FROM estudiantes
FULL OUTER JOIN inscripciones
ON estudiantes.id_estudiante = inscripciones.id_estudiante;
Este código devuelve:
Los estudiantes con sus inscripciones correspondientes.
Los estudiantes que no tienen inscripciones (
NULL
en los campos deinscripciones
).Inscripciones que no tienen un estudiante asociado (
NULL
en los campos deestudiantes
).
¿Por qué MySQL no soporta FULL OUTER JOIN?
A diferencia de PostgreSQL, SQL Server u Oracle, MySQL no tiene un soporte nativo para FULL OUTER JOIN. Sin embargo, podemos lograr el mismo resultado combinando LEFT JOIN y RIGHT JOIN con UNION
.
Cómo simular un FULL OUTER JOIN en MySQL
Podemos combinar los resultados de LEFT JOIN y RIGHT JOIN para lograr un efecto equivalente a FULL OUTER JOIN en MySQL.
Ejemplo práctico con MySQL
Definimos nuestras tablas
CREATE TABLE estudiantes (
id_estudiante INT PRIMARY KEY,
nombre VARCHAR(100),
correo VARCHAR(100) UNIQUE
);
CREATE TABLE inscripciones (
id_inscripcion INT PRIMARY KEY,
id_estudiante INT,
curso VARCHAR(100),
FOREIGN KEY (id_estudiante) REFERENCES estudiantes(id_estudiante)
);
Insertamos datos
INSERT INTO estudiantes (id_estudiante, nombre, correo) VALUES
(1, 'Ana Gómez', 'ana@gmail.com'),
(2, 'Juan Pérez', 'juan@gmail.com'),
(3, 'Carlos López', 'carlos@gmail.com'),
(4, 'Pedro Méndez', 'pedro@gmail.com');
INSERT INTO inscripciones (id_inscripcion, id_estudiante, curso) VALUES
(1, 1, 'Matemáticas'),
(2, 2, 'Física'),
(3, 2, 'Química'),
(4, 3, 'Historia'),
(5, NULL, 'Biología');
Consulta para simular FULL OUTER JOIN en MySQL
SELECT e.id_estudiante, e.nombre, e.correo, i.id_inscripcion, i.curso
FROM estudiantes e
LEFT JOIN inscripciones i ON e.id_estudiante = i.id_estudiante
UNION
SELECT e.id_estudiante, e.nombre, e.correo, i.id_inscripcion, i.curso
FROM estudiantes e
RIGHT JOIN inscripciones i ON e.id_estudiante = i.id_estudiante;
Resultado esperado
id_estudiante | nombre | correo | id_inscripcion | curso |
---|---|---|---|---|
1 | Ana Gómez | ana@gmail.com | 1 | Matemáticas |
2 | Juan Pérez | juan@gmail.com | 2 | Física |
2 | Juan Pérez | juan@gmail.com | 3 | Química |
3 | Carlos López | carlos@gmail.com | 4 | Historia |
4 | Pedro Méndez | pedro@gmail.com | NULL | NULL |
NULL | NULL | NULL | 5 | Biología |
Conclusión
Aunque MySQL no soporta FULL OUTER JOIN de forma nativa, podemos simularlo usando LEFT JOIN
y RIGHT JOIN
con UNION
. Esto nos permite obtener todas las filas de ambas tablas, asegurándonos de incluir datos sin coincidencias en cualquiera de ellas.
Si trabajas con bases de datos como PostgreSQL, SQL Server u Oracle, puedes usar FULL OUTER JOIN
directamente. Sin embargo, si estás en MySQL, este método es la mejor alternativa para lograr el mismo resultado.
¿Te ha resultado útil esta explicación? ¡Déjame tus comentarios y comparte tu experiencia trabajando con joins en MySQL!
A continuación te dejo con un video donde explico más a detalle acerca de la cláusula FULL JOIN y UNION en MySQL.
No te olvides darle LIKE y SUSCRIBIRTE al blog y a mi canal si te gustó el video.
Si gustas realizar una DONACIÓN para ayudarme a mejorar el canal y mi
contenido, puedes hacerlo mediante el botón ❤$GRACIAS ubicado en la
parte posterior del video en YouTube o visitando el enlace https://linktr.ee/ezavalar y haciendo clic en el botón Donaciones.
Comentarios
Publicar un comentario
Cuéntame que opinas acerca del artículo. Recuerda ser respetuoso si quieres que se publique tu comentario 😊