Utilizar o operador da UNIÃO

Concluído

O operador UNION permite que dois ou mais conjuntos de resultados de consulta sejam combinados em um único conjunto de resultados. Existem duas formas de o fazer:

  • UNIÃO – o resultado combinado não inclui duplicatas.
  • UNION ALL – o conjunto de resultados combinado inclui duplicatas.

Gorjeta

Um NULL em um conjunto é tratado como sendo igual a um NULL em outro conjunto.

Há duas regras ao combinar conjuntos de resultados usando UNION:

  • O número e a ordem das colunas devem ser os mesmos em todas as consultas.
  • Os tipos de dados devem ser compatíveis.

Nota

UNION é diferente de JOIN. JOIN compara colunas de duas tabelas para criar um conjunto de resultados contendo linhas de duas tabelas. UNION concatena dois conjuntos de resultados: todas as linhas do primeiro conjunto de resultados são acrescentadas às linhas do segundo conjunto de resultados.

Vamos dar um exemplo simples de duas listas de clientes e os conjuntos de resultados que eles retornam. A primeira consulta retorna clientes com um CustomerID entre 1 e 9.

SELECT CustomerID, companyname, FirstName + ' ' + LastName AS 'Name'
FROM SalesLT.Customer
WHERE CustomerID BETWEEN 1 AND 9; 

A screenshot that shows results from the first SELECT statement.

A segunda consulta retorna clientes com um CustomerID entre 10 e 19.

SELECT customerid, companyname, FirstName + ' ' + LastName AS 'Name'
FROM saleslt.Customer
WHERE customerid BETWEEN 10 AND 19;

A screenshot that shows results from the second SELECT statement.

Para combinar essas duas consultas no mesmo conjunto de resultados, use o operador UNION:

SELECT customerid, companyname, FirstName + ' ' + LastName AS 'Name'
FROM saleslt.Customer
WHERE customerid BETWEEN 1 AND 9
UNION
SELECT customerid, companyname, FirstName + ' ' + LastName AS 'Name'
FROM saleslt.Customer
WHERE customerid BETWEEN 10 AND 19; 

Este é o conjunto de resultados que é retornado:

A screenshot that shows results from the UNION statement.

Como em todas as instruções Transact-SQL, nenhuma ordem de classificação é garantida, a menos que uma seja explicitamente especificada. Se você precisar de saída classificada, adicione uma cláusula ORDER BY no final da segunda consulta.

Com UNION ou UNION ALL, ambas as consultas devem ter o mesmo número de colunas, e as colunas devem ser do mesmo tipo de dados, permitindo que você junte linhas de consultas diferentes.