Skip to content

Operaciones de conjuntos

Las operaciones de conjuntos en SQL se utilizan para combinar los resultados de dos o más consultas en un solo conjunto de resultados. Las operaciones de conjuntos más comunes son UNION, UNION ALL, INTERSECT y EXCEPT.

En Microsoft SQL Server, las operaciones de conjuntos se pueden realizar utilizando las cláusulas UNION, UNION ALL, INTERSECT y EXCEPT. Cada una de estas cláusulas tiene un propósito específico y se utiliza para combinar los resultados de las consultas de diferentes maneras.

Las siguientes tablas se utilizarán para facilitar la comprensión de las operaciones de conjuntos:

Tabla Employees

EmployeeIDLastNameFirstName
1DavolioNancy
2FullerAndrew
3LeverlingJanet
4PeacockMargaret

Tabla Orders

OrderIDOrderDateEmployeeID
102481996-07-041
102491996-07-052
102501996-07-083
102511996-07-083

Operaciones de conjuntos

UNION

La cláusula UNION se utiliza para combinar los resultados de dos o más consultas en un solo conjunto de resultados. La cláusula UNION elimina automáticamente los duplicados del conjunto de resultados combinado.

La sintaxis básica de la cláusula UNION es la siguiente:

SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;

Por ejemplo, para combinar los resultados de las tablas Employees y Orders, se puede utilizar la siguiente consulta:

SELECT EmployeeID, LastName, FirstName
FROM Employees
UNION
SELECT EmployeeID, NULL AS LastName, NULL AS FirstName
FROM Orders;

En esta consulta, estamos seleccionando los campos EmployeeID, LastName y FirstName de la tabla Employees y combinándolos con los campos EmployeeID, NULL como LastName y NULL como FirstName de la tabla Orders.

Donde tenemos como resultado la siguiente tabla:

EmployeeIDLastNameFirstName
1DavolioNancy
2FullerAndrew
3LeverlingJanet
4PeacockMargaret
NULLNULLNULL

UNION ALL

La cláusula UNION ALL se utiliza para combinar los resultados de dos o más consultas en un solo conjunto de resultados. A diferencia de la cláusula UNION, la cláusula UNION ALL no elimina los duplicados del conjunto de resultados combinado.

La sintaxis básica de la cláusula UNION ALL es la siguiente:

SELECT column1, column2, ...
FROM table1
UNION ALL
SELECT column1, column2, ...
FROM table2;

Por ejemplo, para combinar los resultados de las tablas Employees y Orders utilizando la cláusula UNION ALL, se puede utilizar la siguiente consulta:

SELECT EmployeeID, LastName, FirstName
FROM Employees
UNION ALL
SELECT EmployeeID, NULL AS LastName, NULL AS FirstName
FROM Orders;

En esta consulta, estamos seleccionando los campos EmployeeID, LastName y FirstName de la tabla Employees y combinándolos con los campos EmployeeID, NULL como LastName y NULL como FirstName de la tabla Orders.

Donde tenemos como resultado la siguiente tabla:

EmployeeIDLastNameFirstName
1DavolioNancy
2FullerAndrew
3LeverlingJanet
4PeacockMargaret
1NULLNULL
2NULLNULL
3NULLNULL
3NULLNULL

INTERSECT

La cláusula INTERSECT se utiliza para combinar los resultados de dos o más consultas y devolver solo los registros que se encuentran en todos los conjuntos de resultados.

La sintaxis básica de la cláusula INTERSECT es la siguiente:

SELECT column1, column2, ...
FROM table1
INTERSECT
SELECT column1, column2, ...
FROM table2;

Por ejemplo, para encontrar los empleados que también tienen pedidos en la tabla Orders, se puede utilizar la siguiente consulta:

SELECT EmployeeID, LastName, FirstName
FROM Employees
INTERSECT
SELECT EmployeeID, NULL AS LastName, NULL AS FirstName
FROM Orders;

En esta consulta, estamos seleccionando los campos EmployeeID, LastName y FirstName de la tabla Employees y combinándolos con los campos EmployeeID, NULL como LastName y NULL como FirstName de la tabla Orders.

Donde tenemos como resultado la siguiente tabla:

EmployeeIDLastNameFirstName
1DavolioNancy
2FullerAndrew
3LeverlingJanet

EXCEPT

La cláusula EXCEPT se utiliza para combinar los resultados de dos o más consultas y devolver solo los registros que se encuentran en el primer conjunto de resultados pero no en el segundo conjunto de resultados.

La sintaxis básica de la cláusula EXCEPT es la siguiente:

SELECT column1, column2, ...
FROM table1
EXCEPT
SELECT column1, column2, ...
FROM table2;

Por ejemplo, para encontrar los empleados que no tienen pedidos en la tabla Orders, se puede utilizar la siguiente consulta:

SELECT EmployeeID, LastName, FirstName
FROM Employees
EXCEPT
SELECT EmployeeID, NULL AS LastName, NULL AS FirstName
FROM Orders;

En esta consulta, estamos seleccionando los campos EmployeeID, LastName y FirstName de la tabla Employees y combinándolos con los campos EmployeeID, NULL como LastName y NULL como FirstName de la tabla Orders.

Donde tenemos como resultado la siguiente tabla:

EmployeeIDLastNameFirstName
4PeacockMargaret
1DavolioNancy
2FullerAndrew

Referencias