Mientras manejamos datos en bases de datos, a menudo tendemos a usar los operadores de conjuntos en SQL, para recuperar datos de acuerdo con nuestros requisitos combinando dos o más declaraciones SELECT. En este artículo sobre SQL UNION, analizaré el operador UNION utilizado para recuperar datos en la siguiente secuencia:
- ¿Qué es el operador SQL UNION?
- Sintaxis:
- Sintaxis UNION
- Sintaxis de UNION ALL
- Diferencias entre UNION y UNION ALL
- Ejemplos de SQL UNION:
- Ejemplo de operador UNION
- Ejemplo de operador UNION ALL
- UNION con alias de SQL
- UNIÓN con cláusula WHERE
- UNION ALL con cláusula WHERE
- UNIÓN con UNIONES
- UNION ALL con JOINS
¡Empecemos!
¿Qué es el operador SQL UNION?
Como sugiere el nombre, este operador/cláusula se usa para combinar los resultados de dos o más instrucciones SELECT. Aquí, cada instrucción SELECT utilizada dentro de la instrucción UNION debe tener el mismo número de columnas en el mismo orden. Además, todas las columnas presentes en las sentencias SELECT deben tener tipos de datos similares.
La cláusula UNION proporciona solo valores únicos como salida. Por si acaso, desea valores duplicados, entonces debe usar la cláusula UNION ALL.
Continuando con este artículo sobre SQL UNION, comprendamos la sintaxis.
Sintaxis SQL UNION
Sintaxis UNION
SELECT Column1, Column2, Column3, ..., ColumnN FROM Table1 UNION SELECT Column1, Column2, Column3, ..., ColumnN FROM Table2;
Sintaxis UNION ALL
SELECT Column1, Column2, Column3, ..., ColumnN FROM Table1 UNION ALL SELECT Column1, Column2, Column3, ..., ColumnN FROM Table2;
Continuando con este artículo, comprendamos las diferencias entre UNION y UNION ALL.
Diferencias entre SQL UNION y UNION ALL
UNIÓN | UNIR TODO |
Combina dos o más conjuntos de resultados y no conserva los valores duplicados. | Combina dos o más conjuntos de resultados y mantiene los valores duplicados. |
Syntax: UNION | Syntax: UNION ALL |
A continuación, en este artículo sobre SQL UNION, comprendamos las diferentes formas de usar este operador.
Ejemplos de SQL UNION y UNION ALL
Para su mejor comprensión, consideraré las siguientes tablas para mostrarle diferentes ejemplos.
Tabla de empleados
EmpID | Nombre | EmpAge | Ciudad | Código Postal | País |
1 | Emma | 23 | Berlín | 12109 | Alemania |
2 | Raúl | 26 | Mumbai | 400015 | India |
3 | Aayra | 24 | Nueva York | 10014 | EE.UU. |
4 | Juan | 32 | Londres | E1 7AE | Reino Unido |
5 | Derek | 29 | Nueva York | 10012 | EE.UU. |
Tabla de Proyectos
ID del proyecto | Nombre | Días Laborables | Ciudad | Código postal | País |
1 | Proyecto 1 | 10 | Berlín | 12109 | Alemania |
2 | Proyecto 2 | 7 | Mumbai | 400015 | India |
3 | Proyecto 3 | 20 | Delhi | 110006 | India |
4 | Proyecto 4 | 15 | Mumbai | 400015 | India |
5 | Proyecto 5 | 28 | Berlín | 12109 | Alemania |
Comencemos con ejemplos.
Ejemplos de SQL UNION
Ejemplo de operador UNION
Escriba una consulta para recuperar distintas ciudades de la tabla de empleados y proyectos.
SELECT City FROM Employees UNION SELECT City FROM Projects ORDER BY City;
Salida:
Ciudad |
Berlín |
Delhi |
Londres |
Mumbai |
Nueva York |
Ejemplo de operador UNION ALL
Escriba una consulta para recuperar ciudades de la tabla de empleados y proyectos. Aquí, se deben incluir valores duplicados.
SELECT City FROM Employees UNION ALL SELECT City FROM Projects ORDER BY City;
Salida:
Ciudad |
Berlín |
Berlín |
Berlín |
Delhi |
Londres |
Mumbai |
Mumbai
|
Mumbai |
Nueva York |
Nueva York |
A continuación en este artículo, comprendamos cómo usar la cláusula UNION con alias SQL.
UNION con alias de SQL
Los alias de SQL se utilizan para dar a una tabla o columna un nombre temporal. Entonces, escribamos una consulta para enumerar todos los empleados y proyectos únicos.
SELECT 'Employee' AS Type, Name, City, Country FROM Employees UNION SELECT 'Project', Name, City, Country FROM Projects;
Salida:
Tipo | Nombre | Ciudad | País |
Empleado | Emma | Berlín | Alemania |
Empleado | Raúl | Bombay | India |
Empleado | Aayra | Nueva York | EE.UU. |
Empleado | Juan | Londres | Reino Unido |
Empleado | Derek | Nueva York | EE.UU. |
Proyecto | Proyecto 1 | Berlín | Alemania |
Proyecto | Proyecto 2 | Bombay | India |
Proyecto | Proyecto 3 | Delhi | India |
Proyecto | Proyecto 4 | Bombay | India |
Proyecto | Proyecto 5 | Berlín | Alemania |
UNIÓN con cláusula WHERE
Escriba una consulta para recuperar las distintas ciudades indias y sus códigos postales de la tabla Empleados y Proyectos.
SELECT City, PostalCode, Country FROM Employees WHERE Country='India' UNION SELECT City, PostalCode, Country FROM Projects WHERE Country='India' ORDER BY City;
Salida:
Ciudad | Código Postal | País |
Delhi | 110006 | India |
Mumbai | 400015 | India |
UNION ALL con cláusula WHERE
Escriba una consulta para recuperar las ciudades indias y sus códigos postales tanto de la tabla de Empleados como de Proyectos, donde se permiten valores duplicados
SELECT City, PostalCode, Country FROM Employees WHERE Country='India' UNION ALL SELECT City, PostalCode, Country FROM Projects WHERE Country='India' ORDER BY City;
Salida:
Ciudad | Código postal | País |
Delhi | 110006 | India |
Mumbai | 400015 | India |
Mumbai | 400015 | India |
Mumbai | 400015 | India |
Avanzando en este artículo, comprendamos cómo usar las cláusulas UNION y UNION ALL con JOINS. JOINS en SQL son comandos que se utilizan para combinar filas de dos o más tablas, en función de una columna relacionada entre esas tablas.
UNIÓN con UNIONES
El operador SQL UNION se puede usar con SQL JOINS para recuperar datos de dos tablas diferentes. Voy a considerar la siguiente tabla junto con la tabla Empleados para el ejemplo.
Tabla de detalles del proyecto
PID | Días Laborables | EmpID | Coste del proyecto |
11 | 12 | 4 | 20000 |
22 | 16 | 3 | 35000 |
33 | 30 | 1 | 60000 |
44 | 25 | 3 | 45000 |
55 | 21 | 1 | 50000 |
SELECT EmpID, Name, CostforProject FROM Employees LEFT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID UNION SELECT EmpID, Name, CostforProject FROM Employees RIGHT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID;
Salida:
EmpID | Nombre | Coste del proyecto |
1 | Emma | 60000 |
1 | Emma | 50000 |
2 | Raúl | NULO |
3 | Aayra | 35000 |
3 | Aayra | 45000 |
4 | Juan | 20000 |
5 | Derek | NULO |
UNION TODO con JOINS
Escriba una consulta para recuperar EmpID, Name y CostforProject de la tabla Employees y ProjectDetails, donde se permiten valores duplicados.
SELECT EmpID, Name, CostforProject FROM Employees LEFT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID UNION ALL SELECT EmpID, Name, CostforProject FROM Employees RIGHT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID;
Salida:
EmpID | Nombre | Coste del proyecto |
1 | Emma | 60000 |
1 | Emma | 50000 |
2 | Raúl | NULO |
3 | Aayra | 35000 |
3 | Aayra | 45000 |
4 | Juan | 20000 |
5 | Derek | NULO |
4 | Juan | 20000 |
3 | Aayra | 35000 |
1 | Emma | 60000 |
3 | Aayra | 35000 |
1 | Emma | 50000 |
Con esto, llego al final de este artículo sobre SQL UNION. Espero que haya disfrutado leyendo este artículo sobre SQL UNION. Hemos visto las diferentes formas de usar los comandos UNION y UNION ALL para ayudarlo a escribir consultas. Si desea obtener más información sobre MySQL y conocer esta base de datos relacional de código abierto, consulte nuestro MySQL DBA Capacitación de certificación que viene con capacitación en vivo dirigida por un instructor y experiencia en proyectos de la vida real. Esta capacitación lo ayudará a comprender MySQL en profundidad y lo ayudará a dominar el tema.
¿Tiene alguna pregunta para nosotros? Menciónelo en la sección de comentarios de "SQL UNION" y me comunicaré con usted.