Utilizar conjuntos no PostgreSQL, usando recursos como a União, Interseção e Diferença podem ser bastante úteis no dia-a-dia. O mais utilizado é a União, mas a Interseção e Diferença também são necessárias em muitos momentos. Disponibilizei também uma base de testes, que você pode utilizar para testar os exemplos que vou mostrar aqui.
Para que funcionem corretamente, é necessário que os selects utilizados tenham o mesmo número de colunas e dados do mesmo tipo.
União (UNION E UNION ALL)
O UNION serve para juntar ou unir dois selects, um abaixo do outro. As linhas repetidas são ignoradas.
Exemplo 1.
SELECT nom_prof AS nome FROM professores UNION SELECT nom_alu AS nome FROM alunos
No exemplo 1, o primeiro select retorna os nomes de todos os professores, e o segundo retorna o nome de todos os alunos. O UNION junta todos os nomes em uma única lista.
O UNION ALL é bastante semelhante ao UNION. A única diferença é que as linhas repetidas são exibidas.
Exemplo 2:
SELECT nom_prof AS nome FROM professores UNION ALL SELECT nom_alu AS nome FROM alunos
O exemplo 2 faz a mesma coisa do exemplo 1, com a diferença que as linhas repetidas são exibidas no exemplo 2.
Interseção (INTERSECT)
Exibe apenas os registros que estão nos dois selects.
Exemplo 3:
SELECT nom_prof AS nome FROM professores INTERSECT SELECT nom_alu AS nome FROM alunos
Diferença (EXCEPT)
São exibidas as linhas que estão no primeiro select, mas não estão no segundo select.
Exemplo 4:
SELECT nom_prof AS nome FROM professores EXCEPT SELECT nom_alu AS nome FROM alunos
janeiro 9th, 2013 on 19:18
Tem como unir os valores não nulos de duas colunas apenas em uma coluna da mesma tabela
abril 24th, 2015 on 09:16
gostei por isto e educasional