SQLShack (Português)
Este artigo irá fornecer um mergulho profundo em SQL operador de União, descrevendo seus muitos usos, juntamente com exemplos e explorar algumas perguntas comuns como as diferenças entre União vs União de Todos.
para abordar os requisitos de dados do mundo real, podemos precisar combinar conjuntos de resultados de várias fontes de dados para que possamos fazer a análise de dados ou criar novos conjuntos de dados. Os conjuntos de dados podem ser idênticos, mas há hipóteses de referenciarem tabelas diferentes., Existe uma maneira de combinar os dados em uma única consulta? Os operadores Set são uma opção viável? Vamos começar e ver como algumas das operadoras existentes podem ser usadas para nos ajudar a enfrentar esses desafios comuns.,n vs Union All
Operadores
um operador é um símbolo ou uma palavra-chave define uma ação que é executada em um ou mais expressões na instrução Select.,
Operador de Conjunto
Vamos entrar em detalhes de Operadores de Conjunto no SQL Server, e como usá-los
Existem quatro Operadores de Conjunto no SQL Server:
- Union
- Union All
- EXCEPT
- se CRUZAM
Union
O operador Union combina os resultados de duas ou mais consultas em um distintos único conjunto de resultados que inclui todas as linhas que pertencem a todas as consultas da União. Nesta operação, ele combina mais duas consultas e remove as duplicatas.,
Por exemplo, a tabela ‘A’ tem 1,2, e 3 e a tabela ‘B’ tem 3,4,5.,
Na saída, você pode ver uma distinta lista de registos a partir de dois conjuntos de resultados
Union All
Quando olhando União vs União de Todos, vemos que eles são bastante semelhantes, mas eles têm algumas diferenças importantes em relação a resultados de desempenho perspectiva.,
o operador da União combina os resultados de duas ou mais consultas num único conjunto de resultados que inclui todas as linhas que pertencem a todas as consultas na União. Em termos simples, combina os conjuntos de duas ou mais linhas e mantém duplicados.
Por exemplo, a tabela ‘A’ tem 1,2, e 3 e a tabela ‘B’ tem 3,4,5.,iv>
Na saída, você pode ver todas as linhas que incluem a repetição de registros.,>4
A linha ‘3’ é comum entre os dois conjuntos de resultados.,
excepto
o operador excepto lista as linhas na primeira que não estão na segunda.,/div>
Lista o nome-comum linhas do primeiro conjunto.,
Nota: é muito fácil visualizar um conjunto de operador usando um diagrama de Venn, onde cada uma das tabelas é representada por intersecção de formas. As intersecções das formas, onde as tabelas se sobrepõem, são as linhas onde uma condição é cumprida.,olumns que são definidos em cada consulta deve ter a mesma ordem
Nota:
- Todos esses operadores de Conjunto remover duplicatas, exceto para o operador Union All
- A coluna de saída nomes são citados a partir da primeira consulta eu.,E. quando executamos as declarações selecionadas com qualquer um dos operadores definidos e o conjunto de resultados de cada uma das consultas pode ter diferentes nomes de colunas, de modo que o resultado da instrução selecione refere os nomes de colunas da primeira consulta na operação.
- SQL JOIN é mais frequentemente usado combinar colunas de várias tabelas relacionadas, enquanto que os operadores de conjuntos combina linhas de várias tabelas.,
- Quando os tipos de expressão são os mesmos, mas diferem em precisão, escala, ou comprimento, o resultado é determinado com base nas mesmas regras para a combinação de expressões
Exemplos:
O seguinte consultas T-SQL são preparados e correr contra o Adventureworks2014 banco de dados. Você pode baixar o exemplo AdventireWorks2014 banco de dados aqui
-
Como usar o SQL simples cláusula de União na instrução select
neste exemplo, o conjunto de resultados inclui um conjunto distinto de linhas do primeiro conjunto e o segundo conjunto.,O exemplo seguinte é baseado na regra 1, 3 & 5.,
SELECT 1UNIONESCOLHA 2UNIONSELECIONE 3)UNION(SELECIONE 3 BUNIONSELECIONE > 4UNION5)UNION ALL(SELECIONE 8 cUNIONSELECIONE > 9UNIONSELECT 1)) T;A saída é a combinação de União e de União de Todos os operadores, utilizando parênteses.,
-
Como usar o SQL União com as consultas que tenha com a cláusula WHERE
O exemplo a seguir mostra o uso de União de duas instruções SELECT com uma cláusula WHERE e ORDER BY.,
The following example is based on the rule 1,2 and 3
12345678910SELECT P1.ProductModelID,P1.NameFROM Production.ProductModel P1WHERE ProductModelID IN(3, 4)UNIONSELECT P2.ProductModelID,P2.,Nomeda produção.ProductModel P2em que P2.ProductModelID EM(3, 4)ORDEM POR P1.Nome; -
Como usar a cláusula SELECT INTO com o SQL União
O exemplo a seguir cria uma nova dbo.quadro simulado que utiliza a cláusula INTO na primeira declaração de selecção que contém o conjunto de resultados finais da União do ProductModel colunas e o nome de dois conjuntos de resultados diferentes., Neste caso, ele é derivado da mesma tabela, mas em uma situação no mundo real, isso também pode ser duas tabelas diferentes. O exemplo seguinte baseia-se nas Regras 1 , 2 e 4.
12345678910111213141516DROP TABLE IF EXISTS dbo.,dummy;SELECT P1.ProductModelID,P1.NameINTO dummyFROM Production.ProductModel P1WHERE ProductModelID IN(3, 4)UNIONSELECT P2.ProductModelID,P2.NameFROM Production.ProductModel P2WHERE P2.ProductModelID IN(3, 4)ORDER BY P1.Name;GOSELECT *FROM dbo.,Manequim; -
Como usar o SQL União com as consultas que têm uma cláusula WHERE e ORDER BY
Isso só é possível quando utilizamos SUPERIOR ou de funções de agregação em que cada instrução select do operador Union. Neste caso, as 10 primeiras linhas são listadas a partir de cada conjunto de resultados e combinadas as linhas usando a cláusula União para obter um resultado final. Você também vê que a ordem por cláusula é colocada em toda a instrução select.,
123456789101112131415161718192021SELECIONE o.ModelID,the.,NameFROM(SELECT TOP 10 ProductModelID ModelID,NameFROM Production.ProductModelWHERE ProductModelID NOT IN(3, 4)ORDER BY Name DESC) aUNIONSELECT b.ProductModelID,b.NameFROM(SELECT TOP 10 ProductModelID,NameFROM Production.,ProductModelONDE ProductModelID EM(5, 6)ORDER BY Nome DESC) b; -
Como usar da União de SQL e SQL Pivô
No exemplo a seguir, estamos tentando combinar mais do que um conjunto de resultados. Em uma situação real, você pode ter financeiro números de várias regiões ou departamentos e as tabelas podem ter as mesmas colunas e tipos de dados, mas você deseja colocá-los em um conjunto de linhas e em um único relatório., Em tal cenário, você usaria a cláusula da União e é muito fácil combinar resultados e transformar os dados em um relatório mais significativo.
neste exemplo, o ProductModel é classificado em Top10, Top100, Top 100 e transformando as linhas como um conjunto agregado dos valores nas respectivas colunas. O exemplo seguinte baseia-se na regra 2.,/div>
23456789101112131415161718192021222324SELECT MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100a PARTIR do(SELECT COUNT(*) Top10,0 Top100,0 Top1000a PARTIR de Produção.,ProductModelWHERE ProductModelID < 10UNIONSELECT 0,COUNT(*),0FROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT 0,0,COUNT(*)FROM Production.,ProductModelONDE ProductModelID > 101) T;NULL muito importante são os valores com os Operadores de Conjunto e são tratados como de segunda classe do banco de dados dos cidadãos. Porque NULLs são considerados únicos e se duas linhas têm um NULL na mesma coluna, então eles seriam considerados idênticos, então nesse caso, você está realmente comparando um NULL a um NULL e obtendo igualdade. No exemplo a seguir, você vê o uso de valores nulos. Neste caso, é operado com a função agregada, max.,
23456789101112131415161718192021222324SELECT MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100a PARTIR do(SELECT COUNT(*) Top10,NULL Top100,NULL Top1000a PARTIR de Produção.,ProductModelWHERE ProductModelID < 10UNIONSELECT NULL,COUNT(*),NULLFROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT NULL,NULL,COUNT(*)FROM Production.,ProductModelONDE ProductModelID > 101) T;
Como usar o SQL União com o Grupo e Ter cláusulas
Os exemplos a seguir usa o operador União para combinar o resultado da tabela que todos têm cláusula condicional definida utilizando Group by e Having cláusula.
o lastname é processado especificando as condições na cláusula de ter.
O exemplo a seguir é baseado na regra 5.,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
SELECIONE pp.lastname,
COUNT(*) repetedtwice,
0 Repetedthrice
da pessoa.Pessoa como pp
junta-se aos Recursos Humanos.Employee AS E. ON E. Businentityid = pp.,BusinessEntityID
GROUP BY pp.lastname
tendo contagem(*) = 2
União
seleccionar pp.LastName,
0,
COUNT(*) NtoZRange
de pessoa.Pessoa como pp
junta-se aos Recursos Humanos.Employee AS E. ON E. Businentityid = pp.BusinessEntityID
GROUP BY pp.,Sobrenome
HAVING COUNT(*) > 2;
|
podemos ver que os últimos nomes são derivados em duas colunas diferentes usando o operador Union
isso é tudo por agora…
Resumo
até o momento, abordamos várias opções disponíveis e regras para usar o Conjunto de operadores e entender quando usá-los. Ao determinar se a União vs União Todos há alguns pontos a considerar., Use Union All se você sabe que os conjuntos de resultados de várias consultas não se sobrepõem ou geram duplicados e lembre-se, se você precisa usar parêntesis, você pode fazer isso. Você também pode rodar e transformar a saída.
certifique-se apenas de que os seus tipos de dados coincidem e, se precisar de fazer uma encomenda, faça-o no final depois de ter executado todas essas consultas set. Por natureza, quando se trata de união contra União tudo, União tudo é mais rápido do que União; como os operadores da União incorrer despesas adicionais para eliminar duplicados. espero que tenha gostado deste artigo sobre o operador Sindical SQL., Sinta-se livre para fazer quaisquer perguntas nos comentários abaixo.
- Autor
- Posts Recentes
minha especialidade está em projetar & implementando soluções de alta disponibilidade e migração de DB entre plataformas., As tecnologias atualmente em funcionamento são SQL Server, PowerShell, Oracle e MongoDB.,
Ver todos os posts por Prashanth Jayaram
- Uma rápida visão geral de auditoria de banco de dados em SQL – janeiro 28, 2021
- Como configurar Azure Sincronização de Dados entre bancos de dados SQL Azure e local do SQL Server – 20 de janeiro de 2021
- Como realizar Azure SQL database operações de Importação/Exportação usando o PowerShell – 14 de janeiro de 2021