JOIN VS UNION EN MYSQL: DIFERENCIAS Y EJEMPLOS
En MySQL es muy común confundir "JOIN" y "UNION", aunque hacen cosas completamente distintas.JOIN – Combina columnas de tablas relacionadas
Une columnas de dos o más tablas que están relacionadas entre sí, normalmente a través de una clave foránea.Cuándo usarlo
Cuando las tablas tienen una relación, por ejemplo, un IdCliente que conecta la tabla Clientes con la tabla Pedidos.Tipos más comunes en MySQL
- "INNER JOIN": Solo las filas que coinciden en ambas tablas
- "LEFT JOIN": Todas las filas de la tabla izquierda y coincidencias de la derecha
- "RIGHT JOIN":Todas las filas de la tabla derecha y coincidencias de la izquierda
- "FULL OUTER JOIN": No existe de forma nativa en MySQL se simula con "UNION" de un "LEFT JOIN" y un " RIGHT JOIN"
Ejemplo práctico
SELECT c.Nombre, p.Total
FROM Clientes c
INNER JOIN Pedidos p ON c.IdCliente = p.IdCliente;
UNION – Combina filas de consultas con la misma estructura
Une filas, resultados, de dos o más consultas que tienen el mismo número de columnas y tipos de datos compatibles.Cuándo usarlo
Cuando se quieren juntar resultados similares que vienen de consultas distintas, o de la misma tabla con filtros diferentes.Diferencia importante
- "UNION": Elimina los duplicados
- "UNION ALL": Conserva todos los registros ,incluyendo duplicados, y es más rápido
Ejemplo práctico
SELECT Nombre FROM Clientes2024
UNION
SELECT Nombre FROM Clientes2025;
SELECT producto, cantidad FROM ventas_enero
UNION ALL
SELECT producto, cantidad FROM ventas_febrero;
¿Cuándo usar cada uno?
| Situación | Usar | Motivo |
|---|---|---|
| Quieres información relacionada de varias tablas | JOIN | Combina columnas de tablas relacionadas |
| Quieres juntar resultados de consultas similares | UNION | Combina filas con la misma estructura |
| Necesitas eliminar duplicados | UNION | Elimina automáticamente los repetidos |
| Quieres conservar todos los registros | UNION ALL | Más rápido y no elimina nada |
Consejo importante
- Usar "JOIN" cuando se necesita combinar información relacionada de diferentes tablas.
- Usar "UNION", o "UNION ALL", cuando se quiere combinar resultados de consultas similares.