English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Operador UNION SQL

Neste tutorial, você aprenderá como combinar os resultados de duas ou mais consultas SQL.

Operador UNION

O operador UNION é usado para combinar os resultados de duas ou mais consultas SELECT em um único conjunto de resultados. A operação UNION é diferente da junção que combina colunas de duas tabelas. O operador UNION coloca todas as linhas das duas tabelas de origem em uma tabela de resultados, criando assim uma nova tabela.

A seguir estão as regras básicas para usar UNION para combinar os resultados de duas consultas SELECT:

  • Em todas as consultas, o número e a ordem das colunas devem ser iguais.

  • O tipo de dados da coluna correspondente deve ser compatível.

Quando essas condições forem atendidas, essas tabelas são compatíveis em conjunto (união-compatível):

Sintaxe

Sintaxe básica do UNION:

SELECT column_list FROM table1_nome
   UNION SELECT column_list FROM table2_nome;

Para melhor entender a operação de união, suponhamos que existam alguns campos hipotéticos nas tabelas employees e customers, como first_name e last_name. Observe que esses campos realmente não existem nas tabelas de demonstração do nosso banco de dados.

+----+------------+-----------+--------+
| id | primeiro_nome | último_nome | salário |
+----+------------+-----------+--------+
|  1 | Ethan | Hunt |   5000 |
|  2 | Tony | Montana |   6500 |
|  3 | Sarah | Connor |   8000 |
|  4 | Rick | Deckard |   7200 |
|  5 | Martin | Blank |   5600 |
+----+------------+-----------+--------+

+----+------------+-----------+----------+
| id | primeiro_nome | último_nome | cidade |
+----+------------+-----------+----------+
|  1 | Maria | Anders | Berlin |
|  2 | Fran | Wilson | Madrid |
|  3 | Dominique | Perrier | Paris |
|  4 | Martin | Blank | Turim |
|  5 | Thomas | Hardy | Portland |
+----+------------+-----------+----------+
Tabela: funcionários
Tabela: clientes

Vamos executar a operação de união para combinar os resultados de duas consultas.

A seguinte declaração retorna os nomes e sobrenomes de todos os clientes e funcionários:

SELECT first_name, last_name FROM employees 
UNION
SELECT first_name, last_name FROM customers;

Executar a seguinte declaração, o conjunto de resultados será conforme mostrado a seguir:

+---------------+--------------+
| primeiro_nome | último_nome |
+---------------+--------------+
| Ethan | Hunt |
| Tony | Montana |
| Sarah | Connor |
| Rick | Deckard |
| Martin | Blank |
| Maria | Anders |
| Fran | Wilson |
| Dominique | Perrier |
| Thomas | Hardy |
+---------------+--------------+

Por padrão, o operador UNION remove linhas repetidas do conjunto de resultados combinado. É por isso que a consulta acima retorna9linhas, se você notar que o nome 'Martin Blank' aparece tanto na tabela employees quanto na tabela customers.

No entanto, se você quiser manter linhas repetidas, você pode usar a palavra-chave ALL, conforme mostrado a seguir:

SELECT first_name, last_name FROM employees 
UNION ALL
SELECT first_name, last_name FROM customers;