Kombinieren Sie Tabellenzeilen mit UNION


Kombinieren Sie Tabellenzeilen mit UNION

In dieser Lektion werden wir über die UNION Klausel sprechen. Sie können die UNION Klausel verwenden, um Tabellenzeilen aus zwei verschiedenen Abfragen zu einem Ergebnis zu kombinieren. Im Gegensatz zu einem Join, der Spalten aus verschiedenen Tabellen kombiniert, kombiniert eine Union Zeilen aus verschiedenen Tabellen. Hier ist eine Illustration, wie eine GEWERKSCHAFT aussieht

Gewerkschaften

Alle Beispiele für diese Lektion basieren auf Microsoft SQL Server Management Studio und der AdventureWorks2012-Datenbank., Sie können mit diesen kostenlosen Tools mit meinem Handbuch Erste Schritte mit SQL Server beginnen.

In SQL sieht diese Anweisung aus wie

SELECT columnlistFROM table1UNIONSELECT columnlistFROM table2

Um zwei Tabellen zu verbinden, gibt es einige Anforderungen:

  1. Die Anzahl der Spalten muss für beide select-Anweisungen gleich sein.
  2. Die Spalten müssen in der Reihenfolge vom gleichen Datentyp sein.

Wenn Zeilen kombiniert werden, werden doppelte Zeilen eliminiert. Wenn Sie alle Zeilen aus den Ergebnissen beider select-Anweisungen beibehalten möchten, verwenden Sie das Schlüsselwort ALL.,

Beispiele

Vereinigung zweier Tabellen

Angenommen, Sie wurden gebeten, eine Liste aller AdventureWorks2012-Produktkategorien und-Unterkategorien bereitzustellen. Dazu können Sie zwei separate Abfragen schreiben und zwei separate Ergebnisse bereitstellen, z. B. zwei Tabellenkalkulationen, oder Sie können die UNION Klausel verwenden, um ein kombiniertes Ergebnis zu liefern:

SELECT C.NameFROM Production.ProductCategory AS CUNION ALLSELECT S.NameFROM Production.ProductSubcategory AS S

Daraus erhalten Sie eine kombinierte Liste von Namen, aber angenommen, Sie wollten wissen, welcher Name Kategorien im Vergleich zu Unterkategorien waren., Dazu können Sie eine neue Spalte hinzufügen, die den Kategorietyp angibt:

SELECT 'category', C.NameFROM Production.ProductCategory AS CUNION ALLSELECT 'subcategory', S.NameFROM Production.ProductSubcategory AS S

Union versus Union All

Der Unterschied zwischen UNION und UNION ALL besteht darin, dass UNION mit UNION einen eindeutigen Satz von Zeilen aus dem Unionsergebnis zurückgibt.

Beispiel:

SELECT person.Address.CityFROM person.Address

Gibt 19614 Zeilen.

SELECT person.Address.CityFROM person.AddressUNIONSELECT person.Address.CityFROM person.Address

Gibt 575 Zeilen zurück, was die Anzahl der verschiedenen Stadtnamen in der Tabelle ist. Running UNION All gibt zweimal den gesamten Satz von Stadtnamen zurück:

SELECT person.Address.CityFROM person.AddressUNION ALLSELECT person.Address.CityFROM person.Address

Es werden 39228 Zeilen zurückgegeben.,

Wie Sie sehen, gibt es einen großen Unterschied zur Verwendung des ALL-Qualifikators. Wenn nicht verwendet, sind die Ergebnisse unterschiedliche Werte. Duplikate werden nicht nur zwischen Zeilen aus jedem Ergebnis, sondern auch von innen entfernt.

Union drei Tabellen

Angenommen, das Management möchte eine kombinierte Liste von Personen, Anbietern und Speichernamen, die nach Quelle identifiziert wurden.

Dazu erstellen wir drei separate Abfragen und verwenden dann die union Klausel, um sie zusammenzusetzen. Wir werden dann die Liste bestellen.,

Auf den ersten Blick denken Sie vielleicht, dass die ORDER BY Klausel nur für die letzte select Anweisung gelten würde, aber tatsächlich gilt sie für alle von der Union zurückgegebenen Ergebnisse. Die Datenbank-Engine verarbeitet zuerst alle Union-Anweisungen und dann die order by.

Wenn Sie Zweifel an der Verarbeitungsreihenfolge haben, können Sie mit Klammern „()“ die Reihenfolge der Auswertung ähnlich wie mit Ausdrücken steuern. So würde die Anweisung im Allgemeinen mit Klammern aussehen:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Zur Werkzeugleiste springen