En el lenguaje de consulta de datos SQL estándar, el operador UNION sirve para combinar los resultados de dos consultas independientes, devolviendo como resultado conjunto todos los registros obtenidos por ambas.
Evidentemente, para poder realizar la unión ambas consultas deben devolver exactamente los mismos campos, tanto sus nombres como el tipo de dato. Lo que no es necesario es que se obtengan de la misma manera. Es decir, unos podrían ser campos directos obtenidos de una consulta a una tabla, y los de la segunda parte podrían ser campos calculados. Mientras tengan el mismo nombre y tipo no hay problema.
Así en el caso más sencillo, por ejemplo, si tenemos dos tablas de información con datos de ventas separados por divisiones, algo como esto (en dos tablas diferentes):
Podemos escribir una consulta como esta:
SELECT Comercial, Venta FROM VentasSoftware
UNION
SELECT Comercial, Venta FROM VentasConsultoria
Para obtener el resultado combinado de ambas tablas:
Aquí hay un detalle importante. Si nos fijamos en estos resultados veremos que Pepe, que está en ambas tablas con el mismo valor de ventas, solo aparece una vez. Y es que UNION evita que haya registros duplicados en el resultado final. O sea, elimina las filas duplicadas en las que todos los valores de los campos son iguales.
Si queremos obtener la mezcla total, incluso con duplicados, debemos usar UNION ALL:
SELECT Comercial, Venta FROM VentasSoftware
UNION ALL
SELECT Comercial, Venta FROM VentasConsultoria
que en este caso nos devuelve:
En este caso vemos como el comercial "Pepe" está dos veces.
Además de esta evidente, existe otra diferencia muy importante entre ambos métodos: UNION ALL ofrece mucho más rendimiento que UNION. El motivo es que al no tener que discriminar los registros repetidos el proceso es mucho más simple. En consultas habituales de pocos registros no lo vamos a notar, pero en grandes consultas con muchos posibles resultados sí.
Además, si estamos seguros de que los dos conjuntos de resultados que vamos a unir no tienen datos comunes (o no nos importa), es mejor recurrir siempre a UNION ALL por este motivo.
Fecha de publicación: