SQLShack (Español)

0 Comments

Este artículo proporcionará una inmersión profunda en el operador de SQL Union, describiendo sus muchos usos junto con ejemplos y explorando algunas preguntas comunes como las diferencias entre Union vs Union All.

para abordar los requisitos de datos del mundo real, es posible que necesitemos combinar conjuntos de resultados de múltiples fuentes de datos para poder realizar análisis de datos o crear nuevos conjuntos de datos. Los conjuntos de datos pueden ser idénticos, pero hay posibilidades de que hagan referencia a tablas diferentes., ¿Hay alguna forma de combinar los datos en una sola consulta? ¿Son los operadores Set una opción viable? Comencemos y veamos cómo se pueden usar algunos de los operadores existentes para ayudarnos a abordar estos desafíos comunes.,N vs Union All

  • sintaxis del operador SQL
  • Cómo usar la cláusula SQL Union simple en la instrucción select
  • Cómo Usar SQL Union con las consultas que tienen la cláusula WHERE
  • Cómo usar la cláusula SELECT INTO con Union
  • Cómo Usar SQL Union con las consultas que tienen una cláusula WHERE y una cláusula order by
  • Cómo Usar SQL Union y SQL Pivot
  • Cómo Usar SQL Union con li>

    operadores

    un operador es un símbolo o una palabra clave que define una acción que se realiza en una o más expresiones de la instrucción SELECT.,

    establecer operador

    vamos a entrar en los detalles de los operadores de conjunto en SQL Server, y cómo usarlos

    Hay cuatro operadores de conjunto básico en SQL Server:

    1. Union
    2. Union All
    3. excepto
    4. INTERSECT

    Union

    El operador de unión combina los resultados de dos o más consultas en una sola conjunto de resultados que incluye todas las filas que pertenecen a todas las consultas de la Unión. En esta operación, combina dos consultas más y elimina los duplicados.,

    por ejemplo, la tabla ‘A’ tiene 1,2, y 3 y la tabla ‘B’ tiene 3,4,5.,

    UNION
    SELECT 2
    UNION
    SELECT 3
    )
    UNION
    (
    SELECT 3
    UNION
    SELECT 4
    UNION
    SELECT 5
    div>);

    en la salida, puede ver una lista distinta de los registros de los dos conjuntos de resultados

    en Union vs Union todos encontramos que son bastante similares, pero tienen algunas diferencias importantes desde una perspectiva de resultados de rendimiento.,

    el operador de unión combina los resultados de dos o más consultas en un único conjunto de resultados que incluye todas las filas que pertenecen a todas las consultas de la Unión. En términos simples, combina los dos o más conjuntos de filas y mantiene duplicados.

    por ejemplo, la tabla ‘A’ tiene 1,2, y 3 y la tabla ‘B’ tiene 3,4,5.,iv>

    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    SELECCIONE 1 ID
    UNIÓN
    SELECCIONE 2
    UNIÓN
    SELECCIONE 3
    )
    UNIÓN
    (
    SELECCIONE 3
    UNIÓN
    SELECCIONE 4
    UNIÓN
    SELECCIONE 5
    );

    En la salida, usted puede ver todas las filas que de la repetición de los registros.,>4

    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    SELECCIONE 1 ID
    UNIÓN
    SELECCIONE 2
    UNIÓN
    SELECCIONE 3
    )
    intersección de cada
    (
    SELECCIONE 3
    UNIÓN
    SELECCIONE 4
    UNIÓN
    SELECCIONE 5
    );

    La fila ‘3’ es común entre los dos conjuntos de resultados.,

    EXCEPT

    el operador EXCEPT enumera las filas de la primera que no están en la segunda.,/div>

    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    SELECCIONE 1
    UNIÓN
    SELECCIONE 2
    UNIÓN
    SELECCIONE 3
    )
    EXCEPTO
    (
    SELECCIONE 3 B
    UNIÓN
    SELECCIONE 4
    UNIÓN
    SELECCIONE 5
    );

    Lista el nombre de la común de las filas de la primera serie.,

    nota: es muy fácil visualizar un operador de conjunto utilizando un diagrama de Venn, donde cada una de las tablas se representa mediante la intersección de formas. Las intersecciones de las formas, donde las tablas se superponen, son las filas donde se cumple una condición.,las olumns que se definen en cada consulta deben tener el mismo orden

  • Los conjuntos de filas de sentencias SQL posteriores deben coincidir con el tipo de datos de la primera consulta
  • Los paréntesis pueden construir otros operadores de conjuntos en la misma instrucción
  • Es posible tener una cláusula ORDER BY, pero esa debe ser la última instrucción del grupo SQL
  • y las cláusulas HAVING se pueden aplicar a la consulta individual
  • Nota:

    1. Establecer operadores eliminar duplicados, excepto para el operador UNION ALL
    2. Los nombres de las columnas de salida se refieren desde la primera consulta i.,e. cuando ejecutamos las instrucciones SELECT con cualquiera de los operadores Set y el conjunto de resultados de cada una de las consultas puede tener diferentes nombres de columna, por lo que el resultado de la instrucción SELECT se refiere a los nombres de columna de la primera consulta en la operación.
    3. SQL JOIN se usa más a menudo para combinar columnas de varias tablas relacionadas, mientras que SET Operators combina filas de varias tablas.,
    4. cuando los tipos de expresión son los mismos pero difieren en precisión, escala o longitud, el resultado se determina en función de las mismas reglas para combinar expresiones

    ejemplos:

    las siguientes consultas de T-SQL se preparan y se ejecutan en la base de datos Adventureworks2014. Puede descargar la base de datos Adventreworks2014 de muestra aquí

    1. Cómo usar la cláusula simple SQL Union en la instrucción select

      en este ejemplo, el conjunto de resultados incluye un conjunto distinto de filas del primer conjunto y el segundo conjunto.,El siguiente ejemplo se basa en la Regla 1, 3 & 5.,

      SELECCIONE 1
      UNIÓN
      SELECCIONE 2
      UNIÓN
      SELECCIONE 3
      )
      UNIÓN
      (
      SELECCIONE 3 B
      UNIÓN
      SELECCIONE 4
      UNIÓN
      SELECCIONE 5
      )
      UNIÓN
      (
      SELECCIONE 8 c
      UNIÓN
      SELECCIONE 9
      UNIÓN
      SELECCIONE 1
      )
      ) T;

      El resultado es la combinación de Unión y de Todos los operadores que utilicen paréntesis.,

    2. Cómo Usar SQL Union con las consultas que tienen la cláusula WHERE

      el siguiente ejemplo muestra el uso de Union en dos sentencias SELECT con una cláusula WHERE y una cláusula 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.,Nombre
      de producción.ProductModel P2
      DONDE P2.Modelo de producto en (3, 4)
      Ordenar por P1.Name;

    3. Cómo usar la cláusula SELECT INTO con SQL Union

      el siguiente ejemplo crea un nuevo dbo.tabla ficticia que utiliza la cláusula INTO en la primera instrucción SELECT que contiene el conjunto de resultados finales de la Unión de las columnas ProductModel y name de dos conjuntos de resultados diferentes., En este caso, se deriva de la misma tabla, pero en una situación del mundo real, esto también puede ser dos tablas diferentes. El siguiente ejemplo se basa en las reglas 1 , 2 y 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.,Dummy;

    4. Cómo Usar SQL Union con las consultas que tienen una cláusula WHERE y una cláusula ORDER BY

      funciones top o aggregate en cada declaración SELECT del operador de la Unión. En este caso, las 10 primeras filas se enumeran de cada conjunto de resultados y combinan las filas usando la cláusula Union para obtener un resultado final. También verá que la cláusula order by se coloca en toda la instrucción select.,

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

      SELECCIONE el.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
      DONDE ProductModelID EN(5, 6)
      ORDENAR POR Nombre DESC
      ) b;

    5. Cómo utilizar de la Unión de SQL y SQL Pivote

      En el siguiente ejemplo, estamos tratando de combinar más de un conjunto de resultados. En una situación del mundo real, puede tener números financieros de varias regiones o departamentos y las tablas pueden tener las mismas columnas y tipos de datos, pero desea colocarlos en un conjunto de filas y en un solo informe., En tal escenario, utilizaría la cláusula Union y es muy fácil combinar resultados y transformar los datos en un informe más significativo.

      en este ejemplo, el ProductModel se clasifica en Top10, Top100, Top 100 y transforma las filas como un conjunto agregado de los valores en las columnas respectivas. El siguiente ejemplo se basa en la Regla 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
      DE la
      (
      SELECT COUNT(*) Top10,
      0 Top100,
      0 Top1000
      DE la Producción.,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
      donde ProductModelID > 101
      ) t;

      los valores nulos son muy importantes con los operadores de conjunto y se tratan como ciudadanos de la base de datos. Debido a que los nulos se consideran únicos y si dos filas tienen un nulo en la misma columna, entonces se considerarían idénticos, por lo que en ese caso, en realidad se está comparando un nulo a un nulo y obtener la igualdad. En el siguiente ejemplo, verá el uso de valores NULL. En este caso, se opera con la función aggregate, 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
      DE la
      (
      SELECT COUNT(*) Top10,
      NULL Top100,
      NULL Top1000
      DE la Producción.,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
      donde ProductModelID > 101
      ) t;

    cómo usar SQL union con cláusulas GROUP y having

    los siguientes ejemplos usan el operador UNION para combinar el resultado de la tabla que todas tienen la cláusula condicional definida usando la cláusula GROUP BY y having.

    el apellido se analiza especificando las condiciones en la cláusula having.

    El siguiente ejemplo se basa en la regla 5.,

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

    SELECCIONE el pp.apellidos,
    COUNT(*) repeatedtwice,
    0 Repeatedthrice
    DE la Persona.Persona como pp
    unirse a Recursos Humanos.Empleado como e ON E. BusinessEntityID = pp.,BusinessEntityID
    grupo por pp.lastname
    HAVING COUNT ( * ) = 2
    UNION
    seleccione pp.Apellidos,
    0,
    COUNT(*) NtoZRange
    DE la Persona.Persona como pp
    unirse a Recursos Humanos.Empleado como e ON E. BusinessEntityID = pp.BusinessEntityID
    grupo por pp.,LastName
    HAVING COUNT(*) > 2;

    podemos ver que los apellidos se derivan en dos columnas diferentes utilizando el operador de unión

    eso es todo por ahora

    resumen

    hasta ahora, hemos abordado varias opciones y reglas disponibles para usar operadores de conjunto y entender cuándo usarlos. Al determinar si usar Union vs Union All, hay algunos puntos a considerar., Use Union All si sabe que los conjuntos de resultados de múltiples consultas no se superponen ni generan duplicados y recuerde, si necesita usar paréntesis, puede hacerlo. También puede pivotar y transformar la salida.

    solo asegúrese de que sus tipos de datos coincidan y si necesita hacer un pedido, hágalo al final después de ejecutar todas las consultas establecidas. Por naturaleza, cuando se trata de Union vs Union All, Union All es más rápido que Union; como los operadores sindicales incurren en gastos generales adicionales para eliminar duplicados.

    espero que haya disfrutado de este artículo sobre el operador SQL Union., Siéntase libre de hacer cualquier pregunta en los comentarios a continuación.

    • Autor
    • mensajes Recientes
    Soy un Base de datos tecnólogo, de 11+ años de rica experiencia práctica en tecnologías de bases de datos. Soy profesional certificado de Microsoft y respaldado con un título en Maestría en Aplicaciones Informáticas.
    Mi especialidad es diseñar & implementar soluciones de alta disponibilidad y migración de bases de datos multiplataforma., Las tecnologías en las que se trabaja actualmente son SQL Server, PowerShell, Oracle y MongoDB.,
    Ver todos los mensajes por Prashanth Jayaram

    Últimas entradas por Prashanth Jayaram (ver todos)
    • Una rápida visión general de auditoría de base de datos en SQL – 28 de enero, 2021
    • Cómo configurar Azure Sincronización de Datos entre bases de datos de SQL Azure y SQL Server local – 20 de enero de 2021
    • Cómo realizar Azure SQL de la base de datos de Importación/Exportación de las operaciones con el uso de PowerShell – 14 de enero de 2021


    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *