SQLShack (Deutsch)

0 Comments

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

  • SQL-Operatorsyntax
  • Verwendung der einfachen SQL Union-Klausel in der Select-Anweisung
  • Verwendung der SQL Union mit den Abfragen mit der WHERE-Klausel
  • Verwendung der SELECT INTO-Klausel mit Union
  • Verwendung der SQL Union mit den Abfragen mit einer WHERE-Klausel und Order by-Klausel
  • Verwendung von SQL Union und SQL Union
  • Verwendung der SQL Union mit GROUP-und HAVING-Klauseln
  • 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:

    1. Union
    2. Union Alle
    3. AUßER
    4. 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.,

    UNION
    SELECT 2
    UNION
    SELECT 3
    )
    UNION
    (
    SELECT 3
    UNION
    SELECT 4
    UNION
    SELECT 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>

    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    SELECT 1 ID
    )

    div>

    SELECT 2
    UNION
    SELECT 3
    )
    UNION ALL
    (
    SELECT 3
    UNION
    SELECT 4
    UNION
    SELECT 5
    );

    In der Ausgabe können Sie alle Zeilen sehen, die sich wiederholende Datensätze enthalten.,>4

    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    SELECT 1 ID
    UNION
    SELECT 2
    UNION
    SELECT 3
    )
    intersect each
    (
    SELECT 3
    UNION
    SELECT 4
    UNION
    SELECT 5
    );

    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>

    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    >

    (
    SELECT 1
    UNION
    SELECT 2
    UNION
    SELECT 3
    )
    AUßER
    (
    SELECT 3 B
    UNION
    SELECT 4
    UNION
    SELECT 5
    );

    /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

  • Nachfolgende SQL-Anweisungszeilensätze müssen mit dem Datentyp der ersten Abfrage übereinstimmen
  • Klammern dürfen andere Mengenoperatoren in derselben Anweisung erstellen
  • Es ist möglich, eine ORDER BY-Klausel zu haben, dies sollte jedoch die letzte Anweisung der SQL
  • GROUP BY und HAVING-Klauseln können auf die einzelne Abfrage angewendet werden
  • Hinweis:

    1. diese Set-Operatoren entfernen Duplikate, mit Ausnahme der Union All operator
    2. 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.
    3. SQL JOIN wird häufiger verwendet, um Spalten aus mehreren verwandten Tabellen zu kombinieren, während SET Operatoren Zeilen aus mehreren Tabellen kombinieren.,
    4. 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

    1. 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 1
      UNION
      SELECT 2
      UNION
      SELECT 3
      )
      UNION
      (
      SELECT 3 B
      UNION
      SELECT 4
      UNION
      SELECT 5
      )
      UNION ALL
      (
      SELECT 8 c
      UNION
      SELECT 9
      UNION
      SELECT 1
      )
      ) T;

      Die Ausgabe ist die Kombination von Union und Union All operatoren mit Klammern.,

    2. 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

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10

      SELECT P1.ProductModelID,
      P1.Name
      FROM Production.ProductModel P1
      WHERE ProductModelID IN(3, 4)
      UNION
      SELECT P2.ProductModelID,
      P2.,Name
      AUS der Produktion.ProductModel P2
      WOBEI P2.ProductModelID IN(3, 4)
      ORDER BY P1.Name;

    3. 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.

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16

      DROP TABLE IF EXISTS dbo.,dummy;
      SELECT P1.ProductModelID,
      P1.Name
      INTO dummy
      FROM Production.ProductModel P1
      WHERE ProductModelID IN(3, 4)
      UNION
      SELECT P2.ProductModelID,
      P2.Name
      FROM Production.ProductModel P2
      WHERE P2.ProductModelID IN(3, 4)
      ORDER BY P1.Name;
      GO
      SELECT *
      FROM dbo.,Dummy;

    4. 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.,

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21

      /div>
      WÄHLEN Sie die.ModelID,
      die.,Name
      FROM
      (
      SELECT TOP 10 ProductModelID ModelID,
      Name
      FROM Production.ProductModel
      WHERE ProductModelID NOT IN(3, 4)
      ORDER BY Name DESC
      ) a
      UNION
      SELECT b.ProductModelID,
      b.Name
      FROM
      (
      SELECT TOP 10 ProductModelID,
      Name
      FROM Production.,ProductModel
      WHERE ProductModelID IN(5, 6)
      ORDER BY Name DESC
      ) b;

    5. 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>

      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      WÄHLEN SIE MAX(Top10) Top10,
      MAX(Top100) Top100,
      MAX(Top1000) Top100
      AUS dem
      (
      SELECT COUNT(*) Top10,
      0 Top100,
      0 Top1000
      AUS DER Produktion.,ProductModel
      WHERE ProductModelID < 10
      UNION
      SELECT 0,
      COUNT(*),
      0
      FROM Production.ProductModel
      WHERE ProductModelID > 11
      AND ProductModelID < 100
      UNION
      SELECT 0,
      0,
      COUNT(*)
      FROM Production.,ProductModel
      WOBEI 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.,

      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17

      div>

      18
      19
      20
      21
      22
      23
      24
      WÄHLEN SIE MAX(Top10) Top10,
      MAX(Top100) Top100,
      MAX(Top1000) Top100
      AUS dem
      (
      SELECT COUNT(*) Top10,
      NULL Top100,
      NULL Top1000
      AUS DER Produktion.,ProductModel
      WHERE ProductModelID < 10
      UNION
      SELECT NULL,
      COUNT(*),
      NULL
      FROM Production.ProductModel
      WHERE ProductModelID > 11
      AND ProductModelID < 100
      UNION
      SELECT NULL,
      NULL,
      COUNT(*)
      FROM Production.,ProductModel
      WHERE 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
    Ich bin ein Datenbank-Technologe mit 11+ Jahre reich, hands-on erfahrung mit Datenbanktechnologien. Ich bin Microsoft Certified Professional und habe einen Abschluss in Master of Computer Application.
    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

    Neueste Beiträge von Prashanth Jayaram (siehe alle)
    • 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


    Schreibe einen Kommentar

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