SQLShack (Português)

0 Comments

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

  • SQL Operador de Sintaxe
  • Como usar o SQL simples cláusula de União na instrução select
  • Como usar o SQL União com as consultas que tenha com a cláusula WHERE
  • Como usar a cláusula SELECT INTO com a União
  • Como usar o SQL União com as consultas que têm uma cláusula WHERE e order by
  • Como usar o SQL União e SQL Dinâmica
  • Como usar o SQL União com o GRUPO e TER cláusulas
  • 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:

    1. Union
    2. Union All
    3. EXCEPT
    4. 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.,

    UNION
    ESCOLHA 2
    UNION
    SELECIONE 3
    )
    UNION
    (
    SELECIONE 3
    UNION
    SELECIONE > 4
    UNION
    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>

    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    SELECT 1 ID
    UNION
    ESCOLHA 2
    UNION
    SELECIONE 3
    )
    UNION ALL
    (
    SELECIONE 3
    UNION
    SELECIONE > 4
    UNION
    5
    );

    Na saída, você pode ver todas as linhas que incluem a repetição de registros.,>4

    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    SELECT 1 ID
    UNION
    ESCOLHA 2
    UNION
    SELECIONE 3
    )
    se cruzam cada
    (
    SELECIONE 3
    UNION
    SELECIONE > 4
    UNION
    5
    );

    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>

    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    SELECT 1
    UNION
    ESCOLHA 2
    UNION
    SELECIONE 3
    )
    EXCEPT
    (
    SELECIONE 3 B
    UNION
    SELECIONE > 4
    UNION
    5
    );

    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

  • Subseqüente instrução SQL conjuntos de linhas deve corresponder ao tipo de dados da primeira consulta
  • Parênteses são permitidos para a construção de outros operadores de conjunto na mesma declaração
  • É possível ter uma cláusula ORDER BY, mas o que deve ser a última declaração do SQL
  • GROUP BY e HAVING cláusulas podem ser aplicadas para a consulta individual
  • Nota:

    1. Todos esses operadores de Conjunto remover duplicatas, exceto para o operador Union All
    2. 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.
    3. SQL JOIN é mais frequentemente usado combinar colunas de várias tabelas relacionadas, enquanto que os operadores de conjuntos combina linhas de várias tabelas.,
    4. 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

    1. 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 1
      UNION
      ESCOLHA 2
      UNION
      SELECIONE 3
      )
      UNION
      (
      SELECIONE 3 B
      UNION
      SELECIONE > 4
      UNION
      5
      )
      UNION ALL
      (
      SELECIONE 8 c
      UNION
      SELECIONE > 9
      UNION
      SELECT 1
      )
      ) T;

      A saída é a combinação de União e de União de Todos os operadores, utilizando parênteses.,

    2. 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

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10

      SELECT P1.ProductModelID,
      P1.Name
      FROM Production.ProductModel P1
      WHERE ProductModelID IN(3, 4)
      UNION
      SELECT P2.ProductModelID,
      P2.,Nome
      da produção.ProductModel P2
      em que P2.ProductModelID EM(3, 4)
      ORDEM POR P1.Nome;

    3. 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.

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16

      DROP TABLE IF EXISTS dbo.,dummy;
      SELECT P1.ProductModelID,
      P1.Name
      INTO dummy
      FROM Production.ProductModel P1
      WHERE ProductModelID IN(3, 4)
      UNION
      SELECT P2.ProductModelID,
      P2.Name
      FROM Production.ProductModel P2
      WHERE P2.ProductModelID IN(3, 4)
      ORDER BY P1.Name;
      GO
      SELECT *
      FROM dbo.,Manequim;

    4. 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.,

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21

      SELECIONE o.ModelID,
      the.,Name
      FROM
      (
      SELECT TOP 10 ProductModelID ModelID,
      Name
      FROM Production.ProductModel
      WHERE ProductModelID NOT IN(3, 4)
      ORDER BY Name DESC
      ) a
      UNION
      SELECT b.ProductModelID,
      b.Name
      FROM
      (
      SELECT TOP 10 ProductModelID,
      Name
      FROM Production.,ProductModel
      ONDE ProductModelID EM(5, 6)
      ORDER BY Nome DESC
      ) b;

    5. 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>

      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      SELECT MAX(Top10) Top10,
      MAX(Top100) Top100,
      MAX(Top1000) Top100
      a PARTIR do
      (
      SELECT COUNT(*) Top10,
      0 Top100,
      0 Top1000
      a PARTIR de Produção.,ProductModel
      WHERE ProductModelID < 10
      UNION
      SELECT 0,
      COUNT(*),
      0
      FROM Production.ProductModel
      WHERE ProductModelID > 11
      AND ProductModelID < 100
      UNION
      SELECT 0,
      0,
      COUNT(*)
      FROM Production.,ProductModel
      ONDE 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.,

      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      SELECT MAX(Top10) Top10,
      MAX(Top100) Top100,
      MAX(Top1000) Top100
      a PARTIR do
      (
      SELECT COUNT(*) Top10,
      NULL Top100,
      NULL Top1000
      a PARTIR de Produção.,ProductModel
      WHERE ProductModelID < 10
      UNION
      SELECT NULL,
      COUNT(*),
      NULL
      FROM Production.ProductModel
      WHERE ProductModelID > 11
      AND ProductModelID < 100
      UNION
      SELECT NULL,
      NULL,
      COUNT(*)
      FROM Production.,ProductModel
      ONDE 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
    Eu sou um Banco de dados tecnólogo em ter 11+ anos de rica experiência em tecnologias de Banco de dados. Eu sou um profissional certificado pela Microsoft e apoiado com um grau em Master of Computer Application.
    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

    posts mais Recentes por Prashanth Jayaram (ver todas)
    • 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


    Deixe uma resposta

    O seu endereço de email não será publicado. Campos obrigatórios marcados com *