SQLShack (Français)
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
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:
- Union
- Union
- SAUF
- 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.,
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>
Dans la sortie, vous pouvez voir toutes les lignes qui incluent répétition des enregistrements.,>4
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>
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
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
-
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 1UNIONSÉLECTIONNEZ 2UNIONSÉLECTIONNEZ 3)UNION(SÉLECTIONNEZ 3 BUNIONSÉLECTIONNEZ 4UNIONSÉLECTIONNEZ 5)UNION(SELECT 8 cUNIONSÉLECTIONNEZ 9UNIONSELECT 1)) T;La sortie est la combinaison de l’Union et de Tous les opérateurs à l’aide de parenthèses.,
-
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
12345678910SELECT P1.ProductModelID,P1.NameFROM Production.ProductModel P1WHERE ProductModelID IN(3, 4)UNIONSELECT P2.ProductModelID,P2.,Nomde la Production.Produit Modèle P2où P2.ProductModelID DANS(3, 4)COMMANDE PAR P1.Nom; -
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.
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.,Mannequin; -
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.,
123456789101112131415161718192021SÉLECTIONNEZ l’.ModelID,le.,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.,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; -
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>
23456789101112131415161718192021222324SELECT MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100DE la(SELECT COUNT(*) Top10,0 Top100,0 Top1000DE la Production.,ProductModelWHERE ProductModelID < 10UNIONSELECT 0,COUNT(*),0FROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT 0,0,COUNT(*)FROM Production.,ProductModelWHERE 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.,
23456789101112131415161718192021222324SELECT MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100DE la(SELECT COUNT(*) Top10,NULL, Top100,NULL Top1000DE la Production.,ProductModelWHERE ProductModelID < 10UNIONSELECT NULL,COUNT(*),NULLFROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT NULL,NULL,COUNT(*)FROM Production.,ProductModelOÙ 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
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
- 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