Combine linhas da tabela usando UNION
nesta lição vamos falar sobre a cláusula da União. Você pode usar a cláusula de união para combinar linhas de tabela de duas consultas diferentes em um resultado. Ao contrário de uma junção, que combina colunas de diferentes tabelas, uma união combina linhas de diferentes tabelas. Aqui está uma ilustração do que uma união se parece com
sindicatos
todos os exemplos para esta lição são baseados no Microsoft SQL Server Management Studio e na Base de dados AdventureWorks2012., Você pode começar a usar estas ferramentas gratuitas usando o meu guia começar a usar o servidor SQL.
No SQL esta declaração parece
SELECT columnlistFROM table1UNIONSELECT columnlistFROM table2
a união de duas tabelas existem alguns requisitos:
- O número de colunas deve ser o mesmo para ambas as instruções select.
- as colunas, por Ordem, devem ser do mesmo tipo de dados.
Quando as linhas são combinadas linhas duplicadas são eliminadas. Se quiser manter todas as linhas de ambos os resultados da instrução selecione a palavra-chave.,
exemplos
União dois quadros
suponha que lhe foi pedido para fornecer uma lista de todas as categorias e subcategorias de produtos Aventureworks2012. Para fazer isso, você poderia escrever duas consultas separadas e fornecer dois resultados separados, como dois planilhas, ou você pode usar a cláusula de UNIÃO para entregar um resultado combinado:
SELECT C.NameFROM Production.ProductCategory AS CUNION ALLSELECT S.NameFROM Production.ProductSubcategory AS S
trata-se De obter uma lista combinada de nomes, mas vamos supor que você queria saber qual o nome era categorias versus subcategorias., Para o fazer, poderá adicionar uma nova coluna que indique o tipo de categoria:
SELECT 'category', C.NameFROM Production.ProductCategory AS CUNION ALLSELECT 'subcategory', S.NameFROM Production.ProductSubcategory AS S
União versus União todos
a diferença entre União e união tudo é que, com a União, devolve um conjunto único de linhas do resultado da União; considerando que, todos a União devolve todas as linhas.
exemplo:
SELECT person.Address.CityFROM person.Address
Devolve 19614 linhas.
SELECT person.Address.CityFROM person.AddressUNIONSELECT person.Address.CityFROM person.Address
Devolve 575 linhas, que é o número de nomes de cidades distintos dentro da tabela. A execução do UNION ALL devolve o conjunto inteiro de nomes de cidades duas vezes:
SELECT person.Address.CityFROM person.AddressUNION ALLSELECT person.Address.CityFROM person.Address
devolve 39228 linhas.,
Como você pode ver, há uma grande diferença com o uso de todos os qualificadores. Quando não utilizados, os resultados são valores distintos. Duplicados não são eliminados apenas entre linhas de cada resultado, mas também a partir de dentro.
União três tabelas
suponha que a gerência quer uma lista combinada de pessoas, vendedores e nomes de lojas identificados pela fonte.
para fazer isso, criamos três consultas separadas e, em seguida, usar a cláusula da União para colocá-los juntos. Vamos então encomendar a lista.,
à primeira vista você pode pensar que a ordem por cláusula só se aplicaria à última declaração selecionada, mas na verdade ela se aplica a todos os resultados retornados pela União. O motor de banco de dados primeiro processar todas as declarações da União, em seguida, a ordem por.
Se você está em dúvida sobre a ordem de Processamento, você pode usar parêntesis “()” para controlar a ordem de avaliação Muito como você pode com expressões. Aqui está o que a declaração, em geral, se pareceria com parêntesis: