Kombinieren von Daten mit (SET OPERATORS) UNION, INTERSECT und EXCEPT in SQL Server
- 12-09-2022
- Toanngo92
- 0 Comments
Set-Operatoren, die von SQL Server bereitgestellt werden:
- UNION
- INTERSEC
- AUSSER
Mục lục
Union-Operator (Merge)
Ergebnisse aus zwei verschiedenen Abfrageanweisungen können mit dem UNION-Operator zu einem einzigen Resultset kombiniert werden. Abfrageanweisungen müssen einen kompatiblen Spaltentyp und eine gleiche Anzahl von Spalten haben. Die Spaltennamen können in jeder Anweisung unterschiedlich sein, aber die Datentypen müssen kompatibel sein. Kompatible Datentypen bedeutet, dass der Inhalt einer der Spalten in eine andere Spalte konvertiert werden kann. Wenn beispielsweise eine Abfrageanweisung den Datentyp int und eine andere den Datentyp money hat, sind sie miteinander kompatibel und es kann eine Vereinigung zwischen ihnen stattfinden, da int-Daten in money . data konvertiert werden können
Syntax:
Query_Statement1 UNION [ALL] Query Statment_2
Zum Beispiel:
SELECT Product.ProductId FROM Production.Product UNION SELECT ProductId FROM Sales.SalesOrderDetail
Die obige Anweisung ruft die gesamten ProductId-Spaltendaten beider Tabellen ab, die übereinstimmen. Wenn Sie die ALL -Klausel verwenden, werden alle Tabellen in der Ergebnismenge angezeigt, einschließlich doppelter Datensätze (genauer gesagt, es gibt viele Bestellungen, die dasselbe Produkt verkaufen).
Beispiel UNION ALL :
SELECT Product.ProductId FROM Production.Product UNION ALL SELECT ProductId FROM Sales.SalesOrderDetail
Standardmäßig löscht der UNION-Operator redundante Datensätze in der Ergebnismenge. Wenn Sie jedoch die ALL-Klausel zum UNION-Operator hinzufügen, werden alle Datensätze zurückgegeben.
Unterschied zwischen UNION und JOIN:
Die JOIN- und UNION -Operationen können verwendet werden, um Daten aus einer oder mehreren Tabellen zu kombinieren. Der Unterschied liegt in der Art und Weise, wie die Daten kombiniert werden.
Mit einem Wort, Join kombiniert Daten in neuen Spalten. Wenn zwei Tabellen verknüpft werden, werden die Daten der ersten Tabelle in einer Reihe von Spalten zusammen mit der Spalte der zweiten Tabelle in derselben Zeile angezeigt.
Unions kombinieren Daten in neuen Zeilen. Wenn zwei Tabellen miteinander „zusammengeführt“ werden, befinden sich die Daten der ersten Tabelle in einem Satz von Zeilen und die Daten der zweiten Tabelle in einem anderen Satz. Die Zeilen haben das gleiche Ergebnis.
INTERSECT-Operator (Schnittpunkt)
Nehmen wir an, die Situation hat 2 Tabellen Product und SalesOrderDetail und möchte alle gemeinsamen Zeilen in beiden Tabellen anzeigen. Dazu können Sie den INTERSECT- Operator verwenden. Der INTERSECT-Operator wird mit zwei Abfrageanweisungen verwendet, die eine separate Ergebnismenge mit Zeilen zurückgeben, die beiden Abfragen gemeinsam sind.
Syntax:
Query_statement1 INTERSECT Query_statement2
Zum Beispiel:
SELECT Product.ProductId FROM Production.Product INTERSECT SELECT ProductId FROM Sales.SalesOrderDetail
Das Ergebnis der Schnittmenge zwischen den Tabellen Production.Product und Sales.SalesOrderDetail enthält nur Produkt-IDs, die mit Datensätzen in der Produkttabelle übereinstimmen. In einem großen Unternehmen wird eine große Anzahl von Datensätzen in der Datenbank gespeichert sein. Anstatt alle Daten in einer einzigen Tabelle zu speichern, können sie in mehrere verschiedene Tabellen aufgeteilt werden. Wenn Daten in separaten Tabellen gespeichert werden, bietet SQL Server viele Möglichkeiten, Daten aus Tabellen wie JOIN, UNION, INTERSECT zu kombinieren.
Regeln für die Verwendung von INTERSECT :
- Die Anzahl der Spalten und die Reihenfolge, in der sie angegeben werden, sollten in beiden Abfragen gleich sein
- Die Datentypen der verwendeten Spalten müssen kompatibel sein
EXCEPT-Operator (außer)
Der EXCEPT-Operator gibt alle eindeutigen Zeilen aus der Abfrage links von diesem Operator zurück und entfernt alle Datensätze aus der Ergebnismenge, wenn sie der Bedingung rechts vom EXCEPT-Operator entsprechen .
Syntax:
Query_statement1 EXCEPT Query_statement2
Die beiden Regeln, die für den INTERSECT-Operator gelten, gelten auch für den EXCEPT-Operator:
- Die Anzahl der Spalten und die Reihenfolge, in der sie angegeben werden, sollten in beiden Abfragen gleich sein
- Die Datentypen der verwendeten Spalten müssen kompatibel sein
Zum Beispiel:
SELECT Product.ProductId FROM Production.Product EXCEPT SELECT ProductId FROM Sales.SalesOrderDetail
Mit dem obigen Beispiel werden nur die Datensätze aus der Production.Product-Tabelle zurückgegeben, die nicht in der Sales.SalesOrderDetail-Tabelle erscheinen, wir können sehen, dass diese Klausel in der Produktsuche und -analyse verwendet werden kann.
Wir sehen, dass der EXCEPT-Operator alle Datensätze aus der ersten Tabelle mit Ausnahme der Übereinstimmungen in Tabelle 2 abruft. Wenn Sie also EXCEPT verwenden, ist die Reihenfolge der 2 Tabellen in der Abfrage wichtig, und bei INTERSECT spielt es keine Rolle, welche Tabelle vordefiniert ist.