Cláusula UNION de MySQL
La cláusula `UNION` de MySQL se utiliza para combinar los conjuntos de resultados de dos o más consultas `SELECT` en un único conjunto de resultados. Garantiza que los resultados sean distintos, eliminando las filas duplicadas.
Utilización
La cláusula `UNION` se aplica cuando necesitas fusionar las salidas de varias sentencias `SELECT`, que deben tener el mismo número de columnas y tipos de datos compatibles. Simplifica la recuperación de datos a partir de múltiples consultas.
SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;
En esta sintaxis, se utiliza `UNION` para concatenar los resultados de las sentencias `SELECT` de `tabla1` y `tabla2`.
Ejemplos
1. UNIÓN básica
SELECT city
FROM customers
UNION
SELECT city
FROM suppliers;
Este ejemplo combina ciudades de las tablas "clientes" y "proveedores", eliminando los duplicados.
2. UNIÓN con diferentes filtros
SELECT product_name
FROM products
WHERE stock > 50
UNION
SELECT product_name
FROM discontinued_products
WHERE discontinued_date > '2023-01-01';
Aquí, la unión combina nombres de productos de la tabla `productos` en los que las existencias son superiores a 50 con nombres de productos de la tabla `productos_catalogados` que se dejaron de fabricar después del 1 de enero de 2023.
3. UNION ALL para incluir duplicados
SELECT employee_id, name
FROM full_time_employees
UNION ALL
SELECT employee_id, name
FROM part_time_employees;
En este caso, `UNION ALL` incluye todos los duplicados, mostrando todos los empleados de las tablas `full_time_employees` y `part_time_employees`.
4. UNIÓN con ORDENAR POR
SELECT department
FROM departments
UNION
SELECT department
FROM archived_departments
ORDER BY department;
Este ejemplo demuestra el uso de `ORDENAR POR` para ordenar los resultados combinados de los departamentos tanto de `departamentos` como de `departamentos_archivados`.
Consejos y buenas prácticas
- Asegúrate de la compatibilidad de las columnas. El número y los tipos de datos de las columnas de cada sentencia `SELECT` deben coincidir. Las columnas no coincidentes pueden dar lugar a errores.
- Utiliza UNION ALL para mejorar el rendimiento. Si los duplicados son aceptables, utiliza "UNIR TODO", ya que es más rápido porque no elimina los duplicados.
- Ordena los resultados adecuadamente. Utiliza `ORDENAR POR` sólo una vez después de la última sentencia `SELECT` para ordenar todo el resultado de la unión.
- Optimiza las consultas individuales. Asegúrate de que el rendimiento de cada consulta `SELECT` está optimizado antes de utilizar `UNION`.
- Considera el tamaño del conjunto de datos. Los conjuntos de datos más grandes pueden afectar al rendimiento; plantéate dividir las consultas o utilizar índices para optimizarlas.
Tratamiento de errores
Ten en cuenta los posibles errores o advertencias si hay un desajuste en el número de columnas o tipos de datos entre las sentencias `SELECT`. Asegúrate de la compatibilidad de las columnas para evitar estos problemas.