SQLShack (Nederlands)

0 Comments

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

  • SQL Operator syntaxis
  • Hoe gebruik je een eenvoudige SQL Union-clausule in het SELECT-statement
  • Hoe gebruik je SQL Union met de query ‘ s die de WHERE-clausule hebben
  • Hoe gebruik je SQL Union en SQL Pivot
  • hoe SQL Unie met groep te gebruiken en met clausules
  • 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:

    1. Union
    2. Union
    3. EXCEPT
    4. 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.,

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

    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    SELECTEER 1 ID
    UNION
    optie 2
    UNION
    SELECTEER 3
    )
    UNION
    (
    SELECTEER 3
    UNION
    optie 4
    UNION
    5
    );

    In de uitgang, kunt u alle rijen die te herhalen records.,>4

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

    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>

    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    optie 1
    UNION
    optie 2
    UNION
    SELECTEER 3
    )
    EXCEPT
    (
    SELECTEER 3 B
    UNION
    optie 4
    UNION
    5
    );

    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

  • Volgende SQL-instructie rij zet, moet overeenkomen met het gegevenstype van de eerste query
  • Haakjes zijn toegestaan om te bouwen van andere operatoren in de dezelfde instructie
  • Het mogelijk om een ORDER BY-component, maar dat mag de laatste verklaring van de SQL
  • groeperen en clausules kunnen worden toegepast op de afzonderlijke query
  • Opmerking:

    1. Al deze Set operatoren duplicaten verwijderen, behalve voor de Unie Alle operator
    2. 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.
    3. SQL JOIN wordt vaker gebruikt combineer kolommen uit meerdere gerelateerde tabellen terwijl SET Operators rijen uit meerdere tabellen combineert.,
    4. 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

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

      de output is De combinatie van de Unie en Unie Alle operators met behulp van haakjes.,

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

      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.,Naam
      van productie.ProductModel P2
      waarbij P2.Productmodel IN (3, 4)
      volgorde van P1.Name;

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

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

      DROP TABLE INDIEN AANWEZIG 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. 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.,

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

      het SELECTEREN van de.ModelID,
      the.,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
      waarbij productmodel IN(5, 6)
      volgorde van naam DESC
      ) b;

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

      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
    SELECTEER MAX(Top10) Top10,
    MAX(Top100) Top100,
    MAX(Top1000) Top100
    VAN de
    (
    SELECT COUNT(*) Top10,
    0 Top100,
    0 Top1000
    VAN de Productie.,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
    waarbij 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.,

    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    SELECTEER MAX(Top10) Top10,
    MAX(Top100) Top100,
    MAX(Top1000) Top100
    VAN de
    (
    SELECT COUNT(*) Top10,
    NULL Top100,
    NULL Top1000
    VAN de Productie.,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
    WAAR 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
    Ik ben een Database technoloog met 11+ jaar van rijke, hands-on ervaring in Database technologieën. Ik ben Microsoft gecertificeerd Professional en ondersteund met een diploma in Master of Computer Application.
    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

    Laatste berichten door Prashanth Jayaram (zie all)
    • 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


    Geef een reactie

    Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *