SQLShack (Svenska)

0 Comments

den här artikeln kommer att ge en djupdykning i SQL Union-operatören, som beskriver dess många användningsområden tillsammans med exempel och utforska några vanliga frågor som skillnaderna mellan Union vs Union alla.

för att hantera verkliga datakrav kan vi behöva kombinera resultatuppsättningar från flera datakällor så att vi kan göra dataanalys eller skapa nya datauppsättningar. Datauppsättningarna kan vara identiska men det finns chanser att de refererar till olika tabeller., Finns det ett sätt att kombinera data i en enda fråga? Är fastställda operatörer ett genomförbart alternativ? Låt oss komma igång och se hur några av de befintliga operatörerna kan användas för att hjälpa oss att hantera dessa gemensamma utmaningar.,n vs Union All

  • SQL Operator Syntax
  • så här använder du simple SQL Union-klausulen i select-satsen
  • hur man använder SQL Union med de frågor som har WHERE-klausulen
  • hur man använder SELECT INTO-klausulen med Union
  • hur man använder SQL Union med de frågor som har en WHERE-klausul och order by-klausul
  • hur man använder SQL Union och SQL Pivot
  • hur man använder SQL Union med grupp
  • operatörer

    en operatör är en symbol eller ett nyckelord definierar en åtgärd som utförs på ett eller flera uttryck i SELECT-satsen.,

    Ställ in operatör

    låt oss komma in i detaljerna för inställda operatörer i SQL Server, och hur man använder dem

    det finns fyra grundläggande uppsättning operatörer i SQL Server:

    1. Union
    2. Union Alla
    3. utom
    4. skär

    Union

    unionsoperatören kombinerar resultaten av två eller flera frågor till en distinkt resultatuppsättning som innehåller alla rader som hör till alla frågor i unionen. I den här åtgärden kombinerar den ytterligare två frågor och tar bort dubbletter.,

    till exempel har tabellen ” a ”1,2 och 3 och tabellen” B ” har 3,4,5.,

    UNION
    välj 2
    UNION
    Välj 3
    )
    UNION
    (
    Välj 3
    UNION
    Välj 4
    UNION
    välj 5
    );

    i utmatningen kan du se en tydlig lista över posterna från de två resultatuppsättningarna

    Union alla

    När du tittar på Union vs Union allt vi tycker att de är ganska lika, men de har några viktiga skillnader från ett resultatperspektiv.,

    unionsoperatören kombinerar resultaten av två eller flera frågor till en enda resultatuppsättning som innehåller alla rader som hör till alla frågor i unionen. I enkla termer kombinerar den de två eller flera raduppsättningarna och håller dubbletter.

    till exempel har tabellen ” a ”1,2 och 3 och tabellen” B ” har 3,4,5.,iv>

    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    välj 1 ID
    UNION
    välj 2
    Union
    välj 3
    )
    Union all
    (
    Välj 3
    Union
    välj 4
    Union
    välj 5
    );

    i utmatningen kan du också se alla rader som innehåller upprepade poster.,>4

    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    välj 1 id
    Union
    välj 2
    Union
    välj 3
    )
    skär varje
    (
    välj 3
    Union
    välj 4
    Union
    välj 5
    );

    raden ’3’ är vanlig mellan de två resultatuppsättningarna.,

    förutom

    den utom operatören listar raderna i det första som inte finns i det andra.,/div>

    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    välj 1
    Union
    välj 2
    Union
    välj 3
    )
    utom
    (
    välj 3 b
    Union
    Välj 4
    Union
    välj 5
    );

    lista namnet-de vanliga raderna från den första uppsättningen.,

    Obs! Det är väldigt enkelt att visualisera en uppsättning operatör med ett Venn-diagram, där var och en av tabellerna representeras av skärande former. Skärningarna av formerna, där tabellerna överlappar varandra, är raderna där ett villkor är uppfyllt.,olumns som definieras i varje fråga måste ha samma ordning

  • efterföljande SQL-satsradsuppsättningar måste matcha datatypen för den första frågan
  • parenteser får konstruera andra uppsatta operatörer i samma sats
  • Det är möjligt att ha en order efter klausul, men det borde vara den sista satsen i SQL
  • grupp med och med klausuler kan tillämpas på den enskilda frågan
  • Obs:

    1. alla dessa uppsättningar operatörer tar bort dubbletter, med undantag för Union all operator
    2. kolumnnamnen för utmatning hänvisas från den första frågan i.,e. när vi kör SELECT-satserna med någon av de inställda operatörerna och resultatuppsättningen för var och en av frågorna kan ha olika kolumnnamn, så resultatet av SELECT-satsen refererar kolumnnamnen från den första frågan i operationen.
    3. SQL JOIN används oftare kombinera kolumner från flera relaterade tabeller medan ange operatörer kombinerar rader från flera tabeller.,
    4. när uttryckstyperna är desamma men skiljer sig åt i precision, skala eller längd bestäms resultatet utifrån samma regler för att kombinera uttryck

    exempel:

    följande T-SQL-frågor utarbetas och körs mot Adventureworks2014-databasen. Du kan ladda ner provet AdventireWorks2014 Databas här

    1. hur man använder enkel SQL Union klausul i select-sats

      i det här exemplet innehåller resultatuppsättningen en distinkt uppsättning rader från den första uppsättningen och andra uppsättningen.,Följande exempel är baserat på Regel 1, 3 & 5.,

      välj 1
      UNION
      välj 2
      UNION
      Välj 3
      )
      UNION
      UNION
      Välj 3 b
      UNION
      Välj 4
      UNION
      välj 5
      )
      Union all
      (
      välj 8 C
      Union
      välj 9
      Union
      välj 1
      )
      ) t;

      utgången är kombinationen av union och Union alla operatörer som använder parentes.,

    2. hur du använder SQL Union med de frågor som har WHERE-klausulen

      följande exempel visar användningen av Union i två SELECT-satser med en WHERE-klausul och ORDER BY-klausul.,

      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.,Namn
      från produktionen.ProductModel P2
      DÄR P2.ProductModelID i (3, 4)
      ORDER BY P1.Name;

    3. hur man använder SELECT INTO-klausul med SQL Union

      följande exempel skapar en ny dbo.dummy tabell med hjälp av INT-klausulen i det första SELECT-uttalandet som innehåller slutresultatet av unionen av kolumnerna ProductModel och namn från två olika resultatuppsättningar., I det här fallet härrör det från samma bord men i en verklig världssituation kan detta också vara två olika tabeller. Följande exempel är baserat på Regel 1, 2 och 4.

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

      drop table if exists dbo. – herr talman!,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.,

    4. hur du använder SQL Union med frågor som har en WHERE klausul och ordning efter klausul

      detta är endast möjligt när vi använder TOP eller aggregerade funktioner i varje select uttalande av unionsoperatören. I det här fallet är topp 10 rader listade från varje resultatuppsättning och kombinerade raderna med hjälp av Union-klausulen för att få ett slutresultat. Du ser också att order by-klausulen placeras i alla select-satsen.,

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

      välj.ModelID,
      den.,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
      DÄR ProductModelID I(5, 6)
      ORDER BY Name DESC
      ) b;

    5. Hur man använder SQL Unionen och SQL Pivot

      I följande exempel, vi försöker att kombinera mer än en uppsättning av resultaten. I en verklig situation kan du ha ekonomiska siffror från olika regioner eller avdelningar och tabellerna kan ha samma kolumner och datatyper, men du vill lägga dem i en uppsättning rader och i en enda rapport., I ett sådant scenario skulle du använda unionsklausulen och det är mycket lätt att kombinera resultat och omvandla data till en mer meningsfull rapport.

      i det här exemplet kategoriseras ProductModel i Top10, Top100, Top 100 och omvandlar raderna som en aggregerad uppsättning värden till respektive kolumner. Följande exempel är baserat på 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
      välj max(top10) top10,
      Max(Top100) Top100,
      max(top1000) Top100
      från
      (
      välj count(*) top10,
      0 Top100,
      0 top1000
      från produktionen.,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
      där ProductModelID > 101
      ) T;

      NULL värden är mycket viktiga med de inställda operatörerna och behandlas som andra klassens databas medborgare. Eftersom null anses vara unika och om två rader har en NULL i samma kolumn, då de skulle anses identiska, så i så fall, du faktiskt jämföra en NULL till en NULL och få jämlikhet. I följande exempel ser du användningen av NULL-värden. I det här fallet drivs det med aggregatfunktionen, max.,

      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      välj max(top10) top10,
      Max(Top100) Top100,
      max(top1000) Top100
      från
      (
      välj count(*) top10,
      null Top100,
      null top1000
      från produktionen.,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
      där ProductModelID > 101
      ) T;

    så här använder du SQL union med grupp och har klausuler

    följande exempel använder unionsoperatören för att kombinera resultatet av tabellen som alla har den villkorliga klausulen definierad med grupp av och med klausul.

    efternamn tolkas genom att ange villkoren i Ha-klausulen.

    följande exempel baseras på regel 5.,

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

    välj pp.efternamn,
    COUNT(*) repetedtwice,
    0 Repetedthrice
    från personen.Person SOM pp
    GÅ med i HumanResources.Anställd SOM e PÅ e.BusinessEntityID = pp.,BusinessEntityID
    : en GRUPP AV pp.efternamn
    med COUNT(*) = 2
    UNION
    välj pp.Efternamn,
    0,
    COUNT(*) NTOZRANGE
    från Person.Person SOM pp
    GÅ med i HumanResources.Anställd SOM e PÅ e.BusinessEntityID = pp.BusinessEntityID
    : en GRUPP AV pp.,Efternamn
    med COUNT(*) > 2;

    Vi kan se att efternamnen härleds till två olika kolumner med hjälp av unionsoperatören

    det är allt för nu…

    sammanfattning

    hittills har vi tagit upp olika tillgängliga alternativ och regler för att använda uppsatta operatörer och förstå när de ska användas. När man bestämmer om man ska använda Union vs Union alla finns det några punkter att överväga., Använd Union All om du vet att resultatuppsättningarna från flera frågor inte överlappar eller genererar dubbletter och kom ihåg att om du behöver använda parenteser kan du göra det. Du kan också svänga och omvandla utgången.

    se bara till att dina datatyper stämmer överens och om du behöver göra en beställning genom att göra det i slutet efter att du har kört alla dessa inställda frågor. Av naturen, när det gäller unionen mot Unionen alla, Unionen alla är snabbare än unionen; som Union operatörer drabbas ytterligare overhead för att eliminera dubbletter.

    Jag hoppas att du haft den här artikeln på SQL Union-operatören., Tveka inte att ställa några frågor i kommentarerna nedan.

    • författare
    • Senaste inlägg
    Jag är en databastekniker som har 11+ år av rika, händer-på erfarenhet av databasteknik. Jag är Microsoft Certified Professional och backas upp med en Examen i Master of Computer Ansökan.
    min specialitet ligger i att designa & implementera lösningar för hög tillgänglighet och plattformsoberoende DB-migrering., Tekniken som för närvarande arbetar med är SQL Server, PowerShell, Oracle och MongoDB.,
    Visa alla inlägg av Prashanth Jayaram

    Senaste inlägg av Prashanth Jayaram (se alla)
    • en snabb översikt över databasrevision i SQL – Januari 28, 2021
    • hur du ställer in Azure Data Sync mellan Azure SQL-databaser och lokaler SQL Server – januari 20, 2021
    • hur du utför Azure SQL – databas import/export operationer med PowerShell-januari 14, 2021


    Lämna ett svar

    Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *