SQLShack (Français)

0 Comments

Cet article va fournir une plongée profonde dans L’opérateur SQL Union, décrivant ses nombreuses utilisations ainsi que des exemples et explorer quelques questions courantes comme les différences entre Union vs Union All.

pour répondre aux besoins en données du monde réel, nous pouvons avoir besoin de combiner des ensembles de résultats provenant de plusieurs sources de données afin de pouvoir analyser les données ou créer de nouveaux ensembles de données. Les ensembles de données peuvent être identiques, mais il y a des chances qu’ils référencent des tables différentes., Est-il un moyen de combiner les données en une seule requête? Les opérateurs Set sont-ils une option viable? Commençons et voyons comment certains des opérateurs existants peuvent être utilisés pour nous aider à relever ces défis communs.,n vs Union de Tous

  • Opérateur SQL Syntaxe
  • utilisation simple Union de SQL clause dans l’instruction select
  • Comment utiliser SQL Union avec les requêtes qui ont la clause where
  • utilisation de la SÉLECTIONNER DANS la clause de l’Union
  • Comment utiliser SQL Union avec les requêtes qui ont une clause where et order by
  • Comment utiliser Union de SQL et SQL Pivot
  • Comment utiliser SQL Union avec le GROUPE et HAVING
  • les Opérateurs

    un opérateur est un symbole ou un mot-clé définit une action qui est effectuée sur un ou plusieurs expressions dans l’instruction Select.,

    Opérateur d’Ensemble

    nous allons entrer dans les détails de l’Ensemble des Opérateurs dans SQL Server, et comment les utiliser

    Il existe quatre principaux Opérateurs ensemblistes en SQL Server:

    1. Union
    2. Union
    3. SAUF
    4. INTERSECT

    Union

    L’opérateur Union combine les résultats de deux ou plusieurs requêtes dans un distinct jeu de résultats unique qui inclut toutes les lignes qui appartiennent à toutes les requêtes dans l’Union. Dans cette opération, il combine deux requêtes et supprime les doublons.,

    Par exemple, le tableau  » A « a de 1, 2, et 3 et le tableau » B  » a 3,4,5.,

    UNION
    SÉLECTIONNEZ 2
    UNION
    SÉLECTIONNEZ 3
    )
    UNION
    (
    SÉLECTIONNEZ 3
    UNION
    SÉLECTIONNEZ 4
    UNION
    SÉLECTIONNEZ 5
    );

    Dans la sortie, vous pouvez voir une liste distincte des enregistrements à partir de deux ensembles de résultats

    l’Union de Tous

    Lors de la recherche à l’Union vs Union Tout, nous trouvons qu’ils sont assez semblables, mais ils ont quelques différences importantes de rendement, d’un point de vue des résultats.,

    L’opérateur Union combine les résultats de deux ou plusieurs requêtes dans un seul ensemble de résultats qui inclut toutes les lignes qui appartiennent à toutes les requêtes dans l’Union. En termes simples, il combine les deux ensembles de lignes ou plus et conserve les doublons.

    Par exemple, le tableau  » A « a de 1, 2, et 3 et le tableau » B  » a 3,4,5.,iv>

    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    SELECT 1 ID
    UNION
    SÉLECTIONNEZ 2
    UNION
    SÉLECTIONNEZ 3
    )
    UNION
    (
    SÉLECTIONNEZ 3
    UNION
    SÉLECTIONNEZ 4
    UNION
    SÉLECTIONNEZ 5
    );

    Dans la sortie, vous pouvez voir toutes les lignes qui incluent répétition des enregistrements.,>4

    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    SELECT 1 ID
    UNION
    SÉLECTIONNEZ 2
    UNION
    SÉLECTIONNEZ 3
    )
    se coupent
    (
    SÉLECTIONNEZ 3
    UNION
    SÉLECTIONNEZ 4
    UNION
    SÉLECTIONNEZ 5
    );

    La ligne ‘3’ qui est commun entre les deux ensembles de résultats.,

    SAUF

    L’opérateur except répertorie les lignes dans la première, qui ne sont pas dans le second.,/div>

    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    SELECT 1
    UNION
    SÉLECTIONNEZ 2
    UNION
    SÉLECTIONNEZ 3
    )
    SAUF
    (
    SÉLECTIONNEZ 3 B
    UNION
    SÉLECTIONNEZ 4
    UNION
    SÉLECTIONNEZ 5
    );

    Liste le nom de la commune les lignes de la première série.,

    Note: Il est très facile de visualiser un ensemble d’opérateur à l’aide d’un diagramme de Venn, où chacune des tables est représenté par l’intersection de formes. Les intersections des formes, où les tables se chevauchent, sont les lignes où une condition est remplie.,les olumns définis dans chaque requête doivent avoir le même ordre

  • Les ensembles de lignes D’instruction SQL suivants doivent correspondre au type de données de la première requête
  • Les parenthèses sont autorisées à construire d’autres opérateurs d’ensemble dans la même instruction
  • Il est possible D’avoir une clause ORDER BY, mais cela devrait être la dernière instruction définir les opérateurs supprimer les doublons, à l’exception de l’opérateur UNION ALL
  • Les noms de colonne de sortie sont référencés à partir de la première requête I.,e. Lorsque nous exécutons les instructions SELECT avec l’un des opérateurs Set et que le jeu de résultats de chacune des requêtes peut avoir des noms de colonnes différents, le résultat de L’instruction SELECT fait donc référence aux noms de colonnes de la première requête de l’opération.
  • SQL JOIN est plus souvent utilisé combiner des colonnes de plusieurs tables associées alors que SET Operators combine des lignes de plusieurs tables.,
  • lorsque les types d’expression sont les mêmes mais diffèrent par la précision, l’échelle ou la longueur, le résultat est déterminé en fonction des mêmes règles de combinaison d’expressions
  • exemples:

    les requêtes T-SQL suivantes sont préparées et exécutées sur la base de données Adventureworks2014. Vous pouvez télécharger L’exemple de base de données AdventireWorks2014 ici

    1. comment utiliser la clause SQL Union simple dans l’instruction select

      dans cet exemple, l’ensemble de résultats comprend un ensemble distinct de lignes du premier ensemble et du deuxième ensemble.,L’exemple suivant est basé sur la règle 1, 3 & 5.,

      SELECT 1
      UNION
      SÉLECTIONNEZ 2
      UNION
      SÉLECTIONNEZ 3
      )
      UNION
      (
      SÉLECTIONNEZ 3 B
      UNION
      SÉLECTIONNEZ 4
      UNION
      SÉLECTIONNEZ 5
      )
      UNION
      (
      SELECT 8 c
      UNION
      SÉLECTIONNEZ 9
      UNION
      SELECT 1
      )
      ) T;

      La sortie est la combinaison de l’Union et de Tous les opérateurs à l’aide de parenthèses.,

    2. Comment utiliser SQL Union avec les requêtes qui ont la clause where

      L’exemple suivant montre l’utilisation de l’Union de deux instructions SELECT avec une clause where et 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.,Nom
      de la Production.Produit Modèle P2
      où P2.ProductModelID DANS(3, 4)
      COMMANDE PAR P1.Nom;

    3. Comment utiliser SÉLECTIONNEZ DANS la clause à l’Union de SQL

      L’exemple suivant crée une nouvelle dbo.table factice utilisant la clause INTO dans la première instruction SELECT qui contient le jeu de résultats final de l’Union des colonnes ProductModel et name de deux jeux de résultats différents., Dans ce cas, il est dérivé de la même table mais dans une situation réelle, il peut également s’agir de deux tables différentes. L’exemple suivant est basé sur les règles 1 , 2 et 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.,Mannequin;

    4. Comment utiliser SQL Union avec les requêtes qui ont une clause where et ORDER BY

      Cela n’est possible que lorsque nous utilisons les meilleures ou les fonctions d’agrégation dans chaque instruction select de l’opérateur Union. Dans ce cas, les 10 premières lignes sont répertoriées à partir de chaque ensemble de résultats et combinées les lignes à l’aide de la clause Union pour obtenir un résultat final. Vous voyez également que la clause order by est placée dans toutes les instructions select.,

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

      SÉLECTIONNEZ l’.ModelID,
      le.,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.,Si vous avez besoin D’un modèle de produit, vous pouvez utiliser un modèle de produit dans le mode de Production(5, 6)
      ordre par nom DESC
      ) b;

    5. comment utiliser SQL Union et SQL pivot

      dans l’exemple suivant, nous essayons de combiner plus d’un ensemble de résultats. Dans une situation réelle, vous pouvez avoir des numéros financiers de différentes régions ou départements et les tables peuvent avoir les mêmes colonnes et types de données, mais vous voulez les mettre dans un ensemble de lignes et dans un seul rapport., Dans un tel scénario, vous utiliseriez la clause Union et il est très facile de combiner les résultats et de transformer les données en un rapport plus significatif.

      dans cet exemple, le ProductModel est classé en Top10, Top100, Top 100 et transforme les lignes en un ensemble agrégé de valeurs dans les colonnes respectives. L’exemple suivant est basé sur la règle 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 Production.,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
      WHERE ProductModelID > 101
      ) T;

      Les valeurs NULL sont très importantes avec les opérateurs Set et sont traitées comme des valeurs de deuxième classe base de données citoyens. Parce que les valeurs nulles sont considérées comme uniques et si deux lignes ont un NULL dans la même colonne, elles seraient considérées comme identiques, donc dans ce cas, vous comparez en fait un NULL à un NULL et obtenez l’égalité. Dans l’exemple suivant, vous voyez l’utilisation de valeurs NULL. Dans ce cas, il fonctionne avec la fonction d’agrégation, 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 Production.,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
      OÙ ProductModelID > 101
      ) T;

    Comment utiliser SQL Union avec le Groupe et Having

    Les exemples suivants utilisent l’opérateur Union pour combiner le résultat de la table qui ont tous la clause conditionnelle définie à l’aide de Group by et Having.

    le nom est analysé en spécifiant les conditions dans la clause having.

    L’exemple suivant est basé sur la règle 5.,

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

    SÉLECTIONNEZ pp.nom,
    COUNT(*) repeatedtwice,
    0 Repeatedthrice
    DE la Personne.Personne en tant que pp
    rejoindre HumanResources.Employé comme e sur E. BusinessEntityID = pp.,BusinessEntityID
    groupe par pp.nom
    HAVING COUNT(*) = 2
    UNION
    SÉLECTIONNEZ pp.Nom,
    0,
    COUNT(*) NtoZRange
    DE la Personne.Personne en tant que pp
    rejoindre HumanResources.Employé comme e sur E. BusinessEntityID = pp.BusinessEntityID
    groupe par pp.,LastName
    HAVING COUNT(*) > 2;

    Nous pouvons voir que les noms de famille sont dérivés dans deux colonnes différentes en utilisant l’opérateur Union

    c’est tout pour l’instant

    résumé

    jusqu’à présent, nous avons abordé diverses options et règles disponibles pour utiliser les opérateurs set et comprendre quand les utiliser. Lors de la détermination de l’utilisation de Union vs Union All, il y a quelques points à considérer., Utilisez Union All si vous savez que les jeux de résultats de plusieurs requêtes ne se chevauchent pas ou ne génèrent pas de doublons et n’oubliez pas que si vous devez utiliser des parenthèses, vous pouvez le faire. Vous pouvez également pivoter et transformer la sortie.

    assurez-vous simplement que vos types de données correspondent et si vous devez passer une commande, faites-le à la fin après avoir exécuté toutes ces requêtes définies. Par nature, quand il s’agit de Union vs Union All, Union All est plus rapide que Union; car les opérateurs Union encourent des frais supplémentaires pour éliminer les doublons.

    j’espère que vous avez apprécié cet article sur L’opérateur SQL Union., N’hésitez pas à poser des questions dans les commentaires ci-dessous.

    • Auteur
    • Derniers Posts
    Je suis d’une Base de données de technologue en avoir 11 ans et plus de riches, de l’expérience pratique sur les technologies de Base de données. Je suis certifié Professionnel Microsoft et soutenu par un diplôme en Master of Computer Application.
    Ma spécialité réside dans la conception de & la mise en œuvre de solutions haute disponibilité et la Migration DB multiplateforme., Les technologies actuellement utilisées sont SQL Server, PowerShell, Oracle et MongoDB.,
    voir tous les messages de Prashanth Jayaram

    derniers messages de Prashanth Jayaram (voir tout)
    • Un aperçu rapide de l’audit de base de données en SQL – Janvier 28, 2021
    • comment configurer Azure Data Sync entre les bases de données Azure SQL et SQL Server sur site-20 janvier 2021
    • comment effectuer des opérations d’importation/exportation de base de données Azure SQL à l’aide de PowerShell – 14 janvier 2021


    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *