SQLShack (Nederlands)
Dit artikel zal een diepe duik in de SQL Union operator geven, de vele toepassingen beschrijven samen met voorbeelden en enkele veel voorkomende vragen onderzoeken, zoals de verschillen tussen Union vs Union All.
om aan de reële gegevensvereisten te voldoen, moeten we mogelijk resultaatsets uit meerdere gegevensbronnen combineren zodat we gegevensanalyses kunnen uitvoeren of nieuwe datasets kunnen maken. De datasets kunnen identiek zijn, maar er is kans dat ze verwijzen naar verschillende tabellen., Is er een manier om de gegevens te combineren in een enkele query? Zijn vaste exploitanten een haalbare optie? Laten we beginnen en zien hoe sommige van de bestaande operators kunnen worden gebruikt om ons te helpen deze gemeenschappelijke uitdagingen aan te pakken.,n vs Union All
Operators
een operator is een symbool of een trefwoord definieert een actie die wordt uitgevoerd op een of meer expressies in het SELECT statement.,
Stel Operator
Laten we krijgen in de details van de Set Operatoren in SQL Server, en hoe ze te gebruiken
Er zijn vier basis Set Operatoren in SQL Server:
- Union
- Union
- EXCEPT
- INTERSECT
Union
De Union-operator combineert de resultaten van twee of meer query ’s in een duidelijk één resultaatset bevat alle rijen die behoren tot alle query’ s in de Unie. In deze bewerking combineert het nog twee query ‘ s en verwijdert de duplicaten.,
bijvoorbeeld, de tabel ‘A’ heeft 1,2, en 3 en de tabel ‘B’ heeft 3,4,5.,
In de uitvoer zie je een duidelijk overzicht van de records van de twee resultaatsets
Union
Bij het zoeken op eu-vs-Unie Al vinden we ze lijken veel op elkaar, maar ze hebben een aantal belangrijke verschillen: van een performance-resultaten perspectief.,
De Union-exploitant combineert de resultaten van twee of meer query ’s in één resultatenreeks die alle rijen bevat die tot alle query’ s in de Union behoren. In eenvoudige termen, het combineert de twee of meer Rij sets en houdt duplicaten.
bijvoorbeeld, de tabel ‘A’ heeft 1,2, en 3 en de tabel ‘B’ heeft 3,4,5.,iv>
In de uitgang, kunt u alle rijen die te herhalen records.,>4
De rij ‘3’ is gemeenschappelijk tussen de twee resultaatsets.,
behalve
De EXCEPT-operator toont de rijen in de eerste die niet in de tweede staan.,/div>
Lijst de naam van de gemeenschappelijke rijen van de eerste set.,
Opmerking: Het is zeer eenvoudig om een set-operator te visualiseren met behulp van een Venn-diagram, waarbij elk van de tabellen wordt weergegeven door snijvormen. De snijpunten van de vormen, waar de tabellen elkaar overlappen, zijn de rijen waar aan een voorwaarde is voldaan.,olumns die zijn gedefinieerd in elke query moeten hetzelfde order
Opmerking:
- Al deze Set operatoren duplicaten verwijderen, behalve voor de Unie Alle operator
- De output kolom worden de namen genoemd van de eerste query ik.,e. Wanneer we de SELECT statements uitvoeren met een van de set operators en resultaatset van elk van de query ‘ s kunnen verschillende kolomnamen hebben, dus het resultaat van het SELECT statement verwijst naar de kolomnamen van de eerste query in de bewerking.
- SQL JOIN wordt vaker gebruikt combineer kolommen uit meerdere gerelateerde tabellen terwijl SET Operators rijen uit meerdere tabellen combineert.,
- wanneer de expressietypen hetzelfde zijn maar verschillen in precisie, schaal of lengte, wordt het resultaat bepaald op basis van dezelfde regels voor het combineren van expressies
voorbeelden:
de volgende T-SQL-queries worden voorbereid en uitgevoerd met de Adventureworks2014-database. U kunt de voorbeelddatabase AdventireWorks2014 hier downloaden
-
hoe gebruik je een eenvoudige SQL Union-clausule in select statement
In dit voorbeeld bevat de resultaatset een afzonderlijke reeks rijen van de eerste en de tweede set.,Het volgende voorbeeld is gebaseerd op de regel 1, 3 & 5.,
optie 1UNIONoptie 2UNIONSELECTEER 3)UNION(SELECTEER 3 BUNIONoptie 4UNION5)UNION(SELECTEER 8 cUNIONSELECTEER 9UNIONoptie 1)) T;de output is De combinatie van de Unie en Unie Alle operators met behulp van haakjes.,
-
How to use SQL Union with the queries that have the WHERE clause
het volgende voorbeeld toont het gebruik van Union in twee SELECT statements met een WHERE clause en ORDER BY clause.,
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.,Naamvan productie.ProductModel P2waarbij P2.Productmodel IN (3, 4)volgorde van P1.Name;Hoe te gebruiken SELECT INTO clause with SQL Union
het volgende voorbeeld maakt een nieuwe dbo aan.dummy tabel met behulp van de INTO-clausule in de eerste SELECT statement die de eindresultaat set van de Vereniging van de kolommen ProductModel en naam uit twee verschillende resultaat sets bevat., In dit geval is het afgeleid van dezelfde tabel, maar in een reële situatie kan dit ook twee verschillende tabellen zijn. Het volgende voorbeeld is gebaseerd op de regel 1 , 2 en 4.
12345678910111213141516DROP TABLE INDIEN AANWEZIG 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.,Dummy;hoe SQL-verbinding te gebruiken met queries die een WHERE-clausule en volgorde per clausule hebben
Dit is alleen mogelijk als we top-of geaggregeerde functies in elke select verklaring van de Union operator. In dit geval worden de top 10-rijen van elke resultatenreeks weergegeven en worden de rijen met behulp van de Union-clausule gecombineerd om een eindresultaat te krijgen. U ziet ook dat de order by clausule in alle SELECT statement is geplaatst.,
123456789101112131415161718192021het SELECTEREN van de.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.,ProductModelwaarbij productmodel IN(5, 6)volgorde van naam DESC) b;Hoe gebruik je van SQL union en SQL pivot
in het volgende voorbeeld proberen we meer dan één set resultaten te combineren. In een echte situatie kunt u financiële nummers uit verschillende regio ‘ s of afdelingen hebben en de tabellen kunnen dezelfde kolommen en gegevenstypen hebben, maar u wilt ze in één reeks rijen en in één rapport plaatsen., In een dergelijk scenario zou u gebruik maken van de Unieclausule en het is heel gemakkelijk om resultaten te combineren en de gegevens om te zetten in een meer betekenisvol verslag.
in dit voorbeeld wordt het ProductModel gecategoriseerd in Top10, Top100, Top 100 en worden de rijen getransformeerd als een geaggregeerde verzameling van de waarden in de respectieve kolommen. Het volgende voorbeeld is gebaseerd op Regel 2.,/div>
23456789101112131415161718192021222324SELECTEER MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100VAN de(SELECT COUNT(*) Top10,0 Top100,0 Top1000VAN de Productie.,ProductModelWHERE ProductModelID < 10UNIONSELECT 0,COUNT(*),0FROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT 0,0,COUNT(*)FROM Production.,ProductModelwaarbij ProductModelID > 101) T;NULL-waarden zijn zeer belangrijk bij de ingestelde Operators en worden behandeld als tweederangs databasecitizens. Omdat NULLs als uniek worden beschouwd en als twee rijen een NULL in dezelfde kolom hebben, dan worden ze als identiek beschouwd, dus in dat geval vergelijk je eigenlijk een NULL met een NULL en krijg je gelijkheid. In het volgende voorbeeld zie je het gebruik van NULL-waarden. In dit geval wordt het bediend met de aggregaatfunctie, max.,
23456789101112131415161718192021222324SELECTEER MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100VAN de(SELECT COUNT(*) Top10,NULL Top100,NULL Top1000VAN de Productie.,ProductModelWHERE ProductModelID < 10UNIONSELECT NULL,COUNT(*),NULLFROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT NULL,NULL,COUNT(*)FROM Production.,ProductModelWAAR ProductModelID > 101) T;
het gebruik van SQL-Unie met de Groep en Met clausules
De volgende voorbeelden gebruiken de operator Union te combineren, het resultaat van de tabel die de voorwaardelijke clausule gedefinieerd met behulp van Group by en Having-component.
de laatste naam wordt ontleed door de voorwaarden in de ‘hebben’ – clausule op te geven.
het volgende voorbeeld is gebaseerd op Regel 5.,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
SELECTEER pp.achternaam,
COUNT (*) repeatedtwice,
0 Repeatedthrice
van de persoon.Persoon als pp
voegt zich bij HumanResources.Werknemer als E op e. Bedrijfsidid = pp.,Bedrijfsidentiteitid
groep door pp.achternaam
met COUNT (*) = 2
Unie
selecteer pp.Achternaam,
0,
COUNT (*) NTOZRANGE
van persoon.Persoon als pp
voegt zich bij HumanResources.Werknemer als E op e. Bedrijfsidid = pp.Bedrijfsidentiteitid
groep door pp.,Achternaam
HAVING COUNT(*) > 2;
|
We kunnen zien dat de laatste namen zijn afgeleid in twee verschillende kolommen met de operator Union
Dat is alles voor nu…
Overzicht
Zo ver, we ingegaan op de verschillende opties beschikbaar zijn, en de regels voor het gebruik van de Set-exploitanten en juist wanneer ze te gebruiken. Bij het bepalen of Union vs Union All te gebruiken zijn er een paar punten te overwegen., Gebruik Union All Als u weet dat de resultaten van meerdere query ‘ s elkaar niet overlappen of duplicaten genereren en onthoud, als u haakjes moet gebruiken, kunt u dat doen. U kunt ook draaien en transformeren van de output.
zorg ervoor dat uw gegevenstypen overeenkomen en als u een bestelling moet uitvoeren, doe dit aan het einde nadat u al die ingestelde queries hebt uitgevoerd. Als het gaat om Unie Versus Unie alles, is Unie alles van nature sneller dan Unie; omdat de exploitanten van de Unie extra overhead moeten maken om duplicaten te elimineren.
Ik hoop dat je genoten hebt van dit artikel over de SQL Union operator., Voel je vrij om vragen te stellen in de commentaren hieronder.
- Auteur
- Laatste Berichten
mijn specialiteit ligt in het ontwerpen van & het implementeren van High availability oplossingen en cross-platform DB migratie., De technologieën die momenteel werken aan zijn SQL Server, PowerShell, Oracle en MongoDB.,
Bekijk alle berichten van Prashanth Jayaram
- Een overzicht van de audit database in SQL – 28 januari 2021
- het instellen van Azure Data Sync tussen Azure SQL-databases en lokale SQL Server – 20 januari 2021
- het uitvoeren van SQL Azure database Import/Export activiteiten met behulp van PowerShell – 14 januari 2021