SQLShack (Deutsch)
Dieser Artikel bietet einen tiefen Einblick in den SQL Union Operator, beschreibt seine vielen Verwendungen zusammen mit Beispielen und erforscht einige häufige Fragen wie die Unterschiede zwischen Union vs Union All.
Um reale Datenanforderungen zu erfüllen, müssen wir möglicherweise Ergebnismengen aus mehreren Datenquellen kombinieren, damit wir Datenanalysen durchführen oder neue Datensätze erstellen können. Die Datensätze können identisch sein, es besteht jedoch die Möglichkeit, dass sie auf verschiedene Tabellen verweisen., Gibt es eine Möglichkeit, die Daten in einer einzigen Abfrage zu kombinieren? Sind Set-Operatoren eine praktikable option? Lassen Sie uns beginnen und sehen, wie einige der bestehenden Betreiber verwendet werden können, um uns bei der Bewältigung dieser gemeinsamen Herausforderungen zu helfen.,n vs Union All
li>
Operatoren
Ein Operator ist ein Symbol oder ein Schlüsselwort definiert eine Aktion, die für einen oder mehrere Ausdrücke in der Select-Anweisung ausgeführt wird.,
Set Operator
Lassen sie uns in die details der Set Operatoren in SQL Server erhalten, und wie sie zu verwenden
Es gibt vier grundlegende Set Operatoren in SQL Server:
- Union
- Union Alle
- AUßER
- INTERSECT
Union
Die Union operator kombiniert die ergebnisse von zwei oder mehr abfragen in eine deutliche einzigen ergebnis alle Zeilen, die zu allen Abfragen in der Union gehören. In diesem Vorgang werden zwei weitere Abfragen kombiniert und die Duplikate entfernt.,
Zum Beispiel hat die Tabelle ‚A‘ 1,2 und 3 und die Tabelle ‚B‘ 3,4,5.,
In der Ausgabe sehen Sie eine eindeutige Liste der Datensätze aus den beiden Ergebnismengen
Union All
Wenn wir Union vs Union All betrachten, finden wir, dass sie ziemlich ähnlich sind, aber sie haben einige wichtige Unterschiede aus Sicht der Leistungsergebnisse.,
Der Unionsoperator kombiniert die Ergebnisse von zwei oder mehr Abfragen zu einer einzigen Ergebnismenge, die alle Zeilen enthält, die zu allen Abfragen in der Union gehören. In einfachen Worten, es kombiniert die zwei oder mehr Zeilensätze und behält Duplikate bei.
Zum Beispiel hat die Tabelle ‚A‘ 1,2 und 3 und die Tabelle ‚B‘ 3,4,5.,iv>
div>
In der Ausgabe können Sie alle Zeilen sehen, die sich wiederholende Datensätze enthalten.,>4
Die Zeile ‚3‘ ist zwischen den beiden Ergebnismengen gemeinsam.,
EXCEPT
Der EXCEPT-Operator listet die Zeilen in der ersten auf, die sich nicht in der zweiten befinden.,/div>
Listen Sie den Namen auf-die gemeinsamen Zeilen aus dem ersten Satz.,
Hinweis: Es ist sehr einfach, einen Mengenoperator mithilfe eines Venn-Diagramms zu visualisieren, wobei jede der Tabellen durch sich kreuzende Formen dargestellt wird. Die Schnittpunkte der Formen, bei denen sich die Tabellen überlappen, sind die Zeilen, in denen eine Bedingung erfüllt ist.,olumns, die in jeder Abfrage definiert sind, müssen dieselbe Reihenfolge haben
Hinweis:
- diese Set-Operatoren entfernen Duplikate, mit Ausnahme der Union All operator
- Die Ausgabespaltennamen werden aus der ersten Abfrage i verwiesen.,e. wenn wir die SELECT-Anweisungen mit einem der Mengenoperatoren ausführen und die Ergebnismenge jeder der Abfragen unterschiedliche Spaltennamen haben kann, so dass das Ergebnis der SELECT-Anweisung bezieht sich auf die Spaltennamen aus der ersten Abfrage in der Operation.
- SQL JOIN wird häufiger verwendet, um Spalten aus mehreren verwandten Tabellen zu kombinieren, während SET Operatoren Zeilen aus mehreren Tabellen kombinieren.,
- Wenn die Ausdruckstypen gleich sind, sich aber in Genauigkeit, Skalierung oder Länge unterscheiden, wird das Ergebnis anhand der gleichen Regeln für die Kombination von Ausdrücken bestimmt
Beispiele:
Die folgenden T-SQL-Abfragen werden vorbereitet und für die Adventureworks2014-Datenbank ausgeführt. Sie können die Beispieldatenbank AdventireWorks2014 hier herunterladen
-
So verwenden Sie die einfache SQL Union-Klausel in der select-Anweisung
In diesem Beispiel enthält die Ergebnismenge einen eindeutigen Satz von Zeilen aus der ersten und der zweiten Menge.,Das folgende Beispiel basiert auf der Regel 1, 3 & 5.,
SELECT 1UNIONSELECT 2UNIONSELECT 3)UNION(SELECT 3 BUNIONSELECT 4UNIONSELECT 5)UNION ALL(SELECT 8 cUNIONSELECT 9UNIONSELECT 1)) T;Die Ausgabe ist die Kombination von Union und Union All operatoren mit Klammern.,
-
So verwenden Sie SQL Union mit den Abfragen mit der WHERE-Klausel
Das folgende Beispiel zeigt die Verwendung von Union in zwei SELECT-Anweisungen mit einer WHERE-Klausel und einer ORDER BY-Klausel.,
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.,NameAUS der Produktion.ProductModel P2WOBEI P2.ProductModelID IN(3, 4)ORDER BY P1.Name; -
Wie Sie mithilfe von SELECT INTO-Klausel mit der SQL Union
im folgenden Beispiel wird eine neue dbo.dummy-Tabelle mit der INTO-Klausel in der ersten SELECT-Anweisung, die die endgültige Ergebnismenge der Vereinigung der Spalten ProductModel und name aus zwei verschiedenen Ergebnismengen enthält., In diesem Fall wird es aus derselben Tabelle abgeleitet, aber in einer realen Situation können dies auch zwei verschiedene Tabellen sein. Das folgende Beispiel basiert auf den Regeln 1, 2 und 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.,Dummy; -
So verwenden Sie SQL Union mit den Abfragen, die eine WHERE-Klausel und eine ORDER BY-Klausel haben
Dies ist nur möglich, wenn wir TOP-oder Aggregatfunktionen in jeder Select-Anweisung des Union-Operators verwenden. In diesem Fall werden die 10 obersten Zeilen aus jeder Ergebnismenge aufgelistet und die Zeilen mithilfe der Union Klausel kombiniert, um ein Endergebnis zu erhalten. Sie sehen auch, dass die order by-Klausel in allen select-Anweisungen platziert ist.,
123456789101112131415161718192021/div>WÄHLEN Sie die.ModelID,die.,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.,ProductModelWHERE ProductModelID IN(5, 6)ORDER BY Name DESC) b; -
Wie verwenden von SQL Union und SQL Pivot
Im folgenden Beispiel, wir versuchen, kombinieren Sie mehr als einen Satz von Ergebnissen. In einer realen Situation haben Sie möglicherweise Finanznummern aus verschiedenen Regionen oder Abteilungen, und die Tabellen haben möglicherweise dieselben Spalten und Datentypen, möchten sie jedoch in einem Satz von Zeilen und in einem einzigen Bericht ablegen., In einem solchen Szenario würden Sie die Union Klausel verwenden und es ist sehr einfach, Ergebnisse zu kombinieren und die Daten in einen aussagekräftigeren Bericht umzuwandeln.
In diesem Beispiel wird das ProductModel in Top10, Top100, Top 100 kategorisiert und die Zeilen als aggregierte Menge der Werte in die jeweiligen Spalten transformiert. Das folgende Beispiel basiert auf der Regel 2.,/div>
23456789101112131415161718192021222324WÄHLEN SIE MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100AUS dem(SELECT COUNT(*) Top10,0 Top100,0 Top1000AUS DER Produktion.,ProductModelWHERE ProductModelID < 10UNIONSELECT 0,COUNT(*),0FROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT 0,0,COUNT(*)FROM Production.,ProductModelWOBEI ProductModelID > () T;Nullwerte sind bei den Mengenoperatoren sehr wichtig und werden als Datenbankbürger zweiter Klasse behandelt. Da Nullen als eindeutig gelten und wenn zwei Zeilen eine NULL in derselben Spalte haben, werden sie als identisch betrachtet, sodass Sie in diesem Fall tatsächlich eine NULL mit einer NULL vergleichen und Gleichheit erhalten. Im folgenden Beispiel sehen Sie die Verwendung von NULL-Werten. In diesem Fall wird es mit der Aggregatfunktion betrieben, max.,
234567891011121314151617div>
18192021222324WÄHLEN SIE MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100AUS dem(SELECT COUNT(*) Top10,NULL Top100,NULL Top1000AUS DER Produktion.,ProductModelWHERE ProductModelID < 10UNIONSELECT NULL,COUNT(*),NULLFROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT NULL,NULL,COUNT(*)FROM Production.,ProductModelWHERE ProductModelID > () T;
So verwenden Sie SQL Union mit Group und Having Klauseln
Die folgenden Beispiele verwenden den Union-Operator, um das Ergebnis der Tabelle zu kombinieren, für die alle die Bedingungsklausel mit Group by und Having Klausel definiert ist.
Der Nachname wird analysiert, indem die Bedingungen in der having Klausel angegeben werden.
Das folgende Beispiel basiert auf Regel 5.,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
SELECT pp.lastname
COUNT(*) repeatedtwice,
0 Repeatedthrice
VON der Person.Person ALS pp
TRITT HumanResources BEI.Mitarbeiter ALS e. On e. BusinessEntityID = pp.,BusinessEntityID
GRUPPE NACH pp.nachname
MIT COUNT (*) = 2
UNION
WÄHLEN SIE pp.LastName
0,
COUNT(*) NtoZRange
VON der Person.Person ALS pp
TRITT HumanResources BEI.Mitarbeiter ALS e. On e. BusinessEntityID = pp.BusinessEntityID
GRUPPE NACH pp.,Nachname
MIT COUNT(*) > 2;
|
Wir können sehen, dass die Nachnamen mit dem Unionsoperator in zwei verschiedene Spalten abgeleitet werden
Das ist alles für jetzt…
Zusammenfassung
Bisher haben wir verschiedene verfügbare Optionen und Regeln angesprochen, um Set-Operatoren zu verwenden und zu verstehen, wann sie verwendet werden sollen. Bei der Bestimmung, ob Union vs Union All verwendet werden soll, sind einige Punkte zu berücksichtigen., Verwenden Sie Union All Wenn Sie wissen, dass sich die Ergebnismengen mehrerer Abfragen nicht überlappen oder Duplikate generieren, können Sie dies tun, wenn Sie Klammern verwenden müssen. Sie können die Ausgabe auch schwenken und transformieren.
Stellen Sie einfach sicher, dass Ihre Datentypen übereinstimmen, und wenn Sie eine ORDER BY ausführen müssen, tun Sie dies am Ende, nachdem Sie alle diese Set-Abfragen ausgeführt haben. Wenn es um Union gegen Union All geht, ist Union All von Natur aus schneller als Union; Da Unionsbetreiber zusätzlichen Aufwand verursachen, um Duplikate zu beseitigen.
Ich hoffe, Ihnen hat dieser Artikel über den SQL Union Operator gefallen., Fühlen Sie sich frei, Fragen in den Kommentaren unten.
- Author
- Recent Posts
Meine Spezialität liegt in der Gestaltung & Implementierung von Hochverfügbarkeitslösungen und plattformübergreifende DB-Migration., Die Technologien, an denen derzeit gearbeitet wird, sind SQL Server, PowerShell, Oracle und MongoDB.,
Alle Beiträge von Prashanth Jayaram
- Eine schnelle Übersicht über Datenbank – Audit in SQL-28., 2021
- So führen Sie Azure SQL – Datenbankimport – / – exportvorgänge mit PowerShell durch-Januar 14, 2021