SQLShack (Dansk)

0 Comments

Denne artikel vil give et dybt dyk ned i den SQL-operatoren Union, der beskriver dens mange bruger sammen med eksempler og udforske nogle almindelige spørgsmål som forskellene mellem Eu-vs Union Alle.

for at imødekomme datakrav i den virkelige verden skal vi muligvis kombinere resultatsæt fra flere datakilder, så vi kan foretage dataanalyse eller oprette nye datasæt. Datasættene kan være identiske, men der er chancer for, at de refererer til forskellige tabeller., Er der en måde at kombinere dataene i en enkelt forespørgsel? Er sæt operatører en farbar vej? Lad os komme i gang og se, hvordan nogle af de eksisterende operatører kan bruges til at hjælpe os med at tackle disse fælles udfordringer.,n vs Union All

  • SQL-Operator-Syntaks
  • Hvordan man kan bruge simple SQL-Union klausul i select-sætning
  • Hvordan man bruger SQL Union med de forespørgsler, som har WHERE
  • Sådan bruger du VÆLGE TIL bestemmelse med Eu ‘
  • Hvordan man bruger SQL Union med de forespørgsler, som har en WHERE-delsætning, og order by
  • Hvordan man bruger SQL Union og SQL Pivot
  • Hvordan man bruger SQL Union med GRUPPEN, og som HAR klausuler
  • Operatører

    En operatør, der er et symbol eller et søgeord definerer en handling, der udføres på én eller flere udtryk i Select-sætningen.,

    Sæt Operatør

    Lad os komme nærmere ind på virksomheder i SQL Server, og hvordan du bruger dem

    Der er fire grundlæggende faser i SQL Server:

    1. Eu
    2. Eu
    3. med UNDTAGELSE
    4. SKÆRER

    Eu

    operatoren Union kombinerer resultaterne af to eller flere forespørgsler i et særskilt enkelt resultat som omfatter alle de rækker, der hører til alle forespørgsler i Eu. I denne operation kombinerer den yderligere to forespørgsler og fjerner duplikaterne.,

    f.eks. har tabellen ‘A’ 1,2 og 3, og tabellen ‘B’ har 3,4,5.,

    EU
    VÆLG 2
    EU
    VÆLG 3
    )
    EU
    (
    VÆLG 3
    EU
    VÆLG 4
    EU
    VÆLG 5
    );

    I output, du kan se en særskilt liste over de registreringer fra de to resultatet sæt

    Eu

    Når man ser på Eu-vs Union Alle vi oplever, at de er helt ens, men de har nogle vigtige forskelle fra et performance-resultatet perspektiv.,

    EU-operatøren kombinerer resultaterne af to eller flere forespørgsler i et enkelt resultatsæt, der omfatter alle rækker, der hører til alle forespørgsler i Unionen. Enkelt sagt kombinerer den de to eller flere rækkesæt og holder duplikater.

    f.eks. har tabellen ‘A’ 1,2 og 3, og tabellen ‘B’ har 3,4,5.,iv>

    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    VÆLG 1 ID
    EU
    VÆLG 2
    EU
    VÆLG 3
    )
    EU
    (
    VÆLG 3
    EU
    VÆLG 4
    EU
    VÆLG 5
    );

    I output, du kan se alle de rækker, der omfatter gentagne registreringer.,>4

    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    VÆLG 1 ID
    EU
    VÆLG 2
    EU
    VÆLG 3
    )
    skærer hver
    (
    VÆLG 3
    EU
    VÆLG 4
    EU
    VÆLG 5
    );

    Den række, ‘3’, er fælles mellem de to resultatsæt.,

    undtagen

    operatøren undtagen viser rækkerne i den første, der ikke er i den anden.,/div>

    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    VÆLG 1
    EU
    VÆLG 2
    EU
    VÆLG 3
    )
    med UNDTAGELSE
    (
    VÆLG 3 B
    EU
    VÆLG 4
    EU
    VÆLG 5
    );

    Liste navnet-de fælles rækker fra det første sæt.,

    Bemærk: Det er meget nemt at visualisere en indstillet person med et Venn-diagram, hvor hver af de tabeller, der er repræsenteret ved krydsende former. Skæringspunkterne mellem figurerne, hvor tabellerne overlapper hinanden, er de rækker, hvor en betingelse er opfyldt.,olumns, der er defineret i hver forespørgsel, skal have samme rækkefølge

  • Efterfølgende SQL-sætning række apparater skal stemme overens med de oplysninger type af første forespørgsel
  • Parentes er tilladt at konstruere andre virksomheder i samme sætning
  • Det er muligt at have en ORDER BY, men det bør være den sidste sætning af SQL
  • GRUPPE, og har klausuler, DER kan anvendes til den enkelte forespørgsel
  • Bemærk:

    1. Alle disse virksomheder fjerne dubletter, bortset fra for Eu-operatør
    2. output kolonne navne er henvist fra den første forespørgsel i.,e. når vi kører SELECT-sætningerne med en af de indstillede operatører, og resultatsæt for hver af forespørgslerne kan have forskellige kolonnenavne, så resultatet af SELECT-sætningen henviser kolonnenavnene fra den første forespørgsel i operationen.
    3. s .l JOIN bruges oftere Kombiner kolonner fra flere relaterede tabeller, mens sæt operatører kombinerer rækker fra flere tabeller.,
    4. Når udtrykket typer er de samme, men varierer i præcision, skala, eller længde, resultatet er opgjort efter de samme regler for kombination af udtryk

    Eksempler:

    følgende T-SQL queries er forberedt og køre mod Adventureworks2014 database. Du kan downloade prøve AdventireWorks2014 database her

    1. Hvordan man kan bruge simple SQL-Union klausul i select-sætning

      I dette eksempel, er resultatet, der omfatter et specifikt sæt af rækker fra det første sæt, og i andet sæt.,Følgende eksempel er baseret på Regel 1, 3 & 5.,

      VÆLG 1
      EU
      VÆLG 2
      EU
      VÆLG 3
      )
      EU
      (
      VÆLG 3 B
      EU
      VÆLG 4
      EU
      VÆLG 5
      )
      EU
      (
      VÆLG 8 c
      EU
      VÆLG 9
      EU
      VÆLG 1
      )
      ) T;

      output er kombinationen af unionens og Eu Alle operatører, der anvender parentes.,

    2. Hvordan man bruger SQL Union med de forespørgsler, som har WHERE

      følgende eksempel viser anvendelsen af Eu i to SELECT-sætninger, med en WHERE og ORDER BY-delsætning.,

      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.,Navn
      fra produktion.Produktmodel P2
      hvor P2.ProductModelID I(3, 4)
      FOR AF P1.Navn;

    3. Sådan bruger du VÆLGE TIL bestemmelse med SQL-Eu

      følgende eksempel opretter en ny dbo.dummy tabel ved hjælp af ind-klausulen i den første SELECT-sætning, der indeholder det endelige resultat sæt af Foreningen af kolonnerne produktmodel og navn fra to forskellige resultatsæt., I dette tilfælde er det afledt af den samme tabel, men i en virkelig situation kan dette også være to forskellige tabeller. Følgende eksempel er baseret på Regel 1, 2 og 4.

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

      DROP TABEL, HVIS der FINDES en 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. Hvordan man bruger SQL Union med de forespørgsler, som har en WHERE-delsætning, og ORDER BY

      Dette er kun muligt, når vi bruger TOP eller samlede funktioner i hver select-sætning af operatoren Union. I dette tilfælde vises top 10 rækker fra hvert resultatsæt og kombinerede rækkerne ved hjælp af Union-klausul for at få et endeligt resultat. Du kan også se, at ordren efter klausul er placeret i alle select-sætningen.,

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

      VÆLG.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
      HVOR ProductModelID I(5, 6)
      FOR VED Navn DESC
      ) b;

    5. Hvordan man kan bruge SQL-Union og SQL Pivot

      I det følgende eksempel, vi forsøger at kombinere mere end ét sæt af resultater. I en situation i den virkelige verden kan du have økonomiske tal fra forskellige regioner eller afdelinger, og tabellerne har muligvis de samme kolonner og datatyper, men du vil placere dem i et sæt rækker og i en enkelt rapport., I et sådant scenario ville du bruge Unionsklausulen, og det er meget nemt at kombinere resultater og omdanne dataene til en mere meningsfuld rapport.

      i dette eksempel kategoriseres produktmodellen i Top10, Top100, top 100 og omdanner rækkerne som et aggregeret sæt af værdierne til de respektive kolonner. Følgende eksempel er baseret 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
      SELECT MAX(Top10) Top10,
      MAX(Top 100) Top100,
      MAX(Top1000) Top100
      FRA
      (
      SELECT COUNT(*) Top10,
      0 Top100,
      0 Top1000
      FRA 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
      HVOR ProductModelID > 101
      ), T;

      NULL-værdier er meget vigtigt med en samling af Aktører og behandles som andenklasses database borgere. Fordi nuller betragtes som unikke, og hvis to rækker har en NULL i samme kolonne, vil de blive betragtet som identiske, så i så fald sammenligner du faktisk en NULL til en NULL og får ligestilling. I det følgende eksempel ser du brugen af NULL-værdier. I dette tilfælde betjenes den med den samlede funktion, ma..,

      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      SELECT MAX(Top10) Top10,
      MAX(Top 100) Top100,
      MAX(Top1000) Top100
      FRA
      (
      SELECT COUNT(*) Top10,
      NULL Top100,
      NULL Top1000
      FRA 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
      HVOR ProductModelID > 101
      ) T;

    Hvordan man bruger SQL Union med Gruppen, og som Har klausuler

    De følgende eksempler anvender operatoren Union til at kombinere resultatet af tabellen, at alle har den betingede klausul, der er defineret ved hjælp af Group by, og som Har klausul.

    efternavn analyseres ved at angive betingelserne i having-klausulen.

    følgende eksempel er baseret på Regel 5.,

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

    VÆLG pp.efternavn,
    tælle ( * ) gentagetto gange,
    0 Gentagethrice
    fra personen.Person som pp
    Deltag i HumanResources.Medarbejder som E på e. BusinessEntityID = pp.,BusinessEntityID
    gruppe af pp.efternavn
    have COUNT(*) = 2
    UNION
    vælg pp.Efternavn,
    0,
    tæller(*) Nto .range
    fra Person.Person som pp
    Deltag i HumanResources.Medarbejder som E på e. BusinessEntityID = pp.BusinessEntityID
    gruppe af pp.,Efternavn
    DER TÆLLER(*) > 2;

    Vi kan se, at de sidste navne er fremstillet i to forskellige kolonner ved hjælp af operatoren Union

    Det er alt for nu…

    Oversigt

    så langt, at vi gennem de forskellige tilgængelige muligheder og regler for at bruge en samling af aktører og forstå, hvornår man skal bruge dem. Når man bestemmer, om man skal bruge Union vs Union alle, er der et par punkter, man skal overveje., Brug Union All hvis du ved, at resultatsættene fra flere forespørgsler ikke overlapper eller genererer duplikater, og husk, at hvis du har brug for parenteser, kan du gøre det. Du kan også dreje og omdanne output.

    bare sørg for, at dine datatyper matcher, og hvis du har brug for at foretage en ordre, skal du gøre det i slutningen, efter at du har kørt alle de indstillede forespørgsler. Når det drejer sig om Union vs Union All, er Union All naturligvis hurtigere end Union; da EU-operatører pådrager sig yderligere omkostninger for at eliminere duplikater.

    Jeg håber du har haft denne artikel om S .l Union operatør., Du er velkommen til at stille spørgsmål i kommentarerne nedenfor.

    • Forfatter
    • Seneste Indlæg
    Jeg er en Database teknolog at have 11+ års rige, hands-on erfaring på Database teknologier. Jeg er Microsoft certificeret professionel og bakkes op med en grad i Master of Computer Application.
    Min specialitet ligger i at designe & implementering af løsninger med høj tilgængelighed og DB-Migration på tværs af platforme., De teknologier, der i øjeblikket arbejder på, er s .l Server, Po .ershell, Oracle og MongoDB.,
    Vis alle indlæg af Prashanth Jayaram

    Seneste indlæg af Prashanth Jayaram (se alle)
    • Et hurtigt overblik over databasen revision i SQL – januar 28, 2021
    • Hvordan man opsætter Azure Data Sync mellem Azure SQL databaser og on-premises SQL Server – 20 januar 2021
    • Hvordan du udfører SQL Azure database Import/Eksport ved hjælp af PowerShell – 14 januar 2021


    Skriv et svar

    Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *