4.4. Combinação de consultas

Os resultados de duas consultas podem ser combinados utilizando as operações com conjuntos [1] união (union), interseção (intersection) e diferença (difference). A sintaxe é

consulta1 UNION [ALL] consulta2
consulta1 INTERSECT [ALL] consulta2
consulta1 EXCEPT [ALL] consulta2

onde consulta1 e consulta2 são consultas que podem utilizar qualquer uma das funcionalidades discutidas anteriormente. As operações com conjuntos também podem ser aninhadas ou encadeadas. Por exemplo:

consulta1 UNION consulta2 UNION consulta3

significa, na verdade,

(consulta1 UNION consulta2) UNION consulta3

UNION anexa o resultado da consulta2 ao resultado da consulta1 (embora não seja garantido que as linhas retornem nesta ordem). Além disso, são eliminadas todas as linhas duplicadas, do mesmo modo que no DISTINCT, a não ser que UNION ALL seja utilizado.

INTERSECT retorna todas as linhas presentes tanto no resultado da consulta1 quanto no resultado da consulta2. As linhas duplicadas são eliminadas, a não ser que INTERSECT ALL seja utilizado.

EXCEPT retorna todas as linhas presentes no resultado da consulta1, mas que não estão presentes no resultado da consulta2 (às vezes isto é chamado de diferença entre os dois resultados). Novamente, as linhas duplicadas são eliminadas a não ser que EXCEPT ALL seja utilizado.

Para ser possível calcular a união, a interseção, ou a diferença entre duas consultas, estas duas consultas precisam ser "compatíveis para união", significando que as duas devem retornar o mesmo número de colunas, e que as colunas correspondentes devem possuir tipos de dado compatíveis, conforme descrito na Seção 7.5.

Notas

[1]

Dados dois conjuntos A e B: chama-se diferença ente A e B o conjunto formado pelos elementos de A que não pertencem a B; chama-se interseção de A com B o conjunto formado pelos elementos comuns ao conjunto A e ao conjunto B; chama-se união de A com B o conjunto formado pelos elementos que pertencem a A ou B. Edwaldo Bianchini e Herval Paccola - Matemática - Operações com conjuntos. (N.T.)