SQLShack (Norsk)

0 Comments

Denne artikkelen vil gi et dypdykk inn i SQL-Union-operatoren, som beskriver dens mange bruker sammen med eksempler og utforske noen av de vanligste spørsmålene som forskjellene mellom Union vs Union Alle.

for Å løse reelle data som trengs, kan vi trenger å kombinere resultatet sett fra flere datakilder, slik at vi kunne gjøre for analysering av data, eller opprette nye datasett. Datasett kan være identiske, men det er sjansene for at de refererer til ulike tabeller., Er det en måte å kombinere data i en enkelt spørring? Er Sett-Operatorer et levedyktig alternativ? La oss komme i gang og se hvordan noen av de eksisterende operatører kan brukes til å hjelpe oss med å løse disse felles utfordringene.,n vs Union Alle

  • SQL-Operatør Syntaks
  • Hvordan å bruke enkle SQL Union punkt i select-uttrykk
  • Hvordan bruke SQL Union med spørsmål som har den DER punkt
  • Hvordan å bruke VELGER INN punkt med Union
  • Hvordan bruke SQL Union med spørsmål som har en WHERE og order by-setningsdel
  • Hvordan bruke SQL Union og SQL Pivot
  • Hvordan bruke SQL Union med GRUPPEN og HA klausuler
  • Operatører

    En operatør er et symbol eller et nøkkelord som definerer en handling som utføres på en eller flere uttrykk i Select-setning.,

    Angi Operatør

    La oss komme inn i detaljer på Sett Operatører i SQL Server, og hvordan du kan bruke dem på

    Det er fire grunnleggende Sett Operatører i SQL Server:

    1. Union
    2. Union Alle
    3. UNNTATT
    4. KRYSSER hverandre

    Union

    The Union-operatoren kombinerer resultatene av to eller flere søk i en enkelt forskjellige resultat som inkluderer alle rader som tilhører alle spørsmål i eu. I denne operasjonen, den kombinerer to flere søk og fjerner duplikater.,

    For eksempel, bordet ‘A’ har 1,2, og 3 og tabell ‘B’ har 3,4,5.,

    UNION
    VELG 2
    UNION
    VELG 3
    )
    UNION
    (
    VELG 3
    UNION
    VELG 4
    UNION
    VELG 5
    );

    I produksjonen, du kan se en tydelig liste over poster fra to resultatsett

    Union Alle

    Når du ser på Union vs Union Alle vi finne at de er ganske like, men de har noen viktige forskjeller mellom resultatene perspektiv.,

    The Union-operatoren kombinerer resultatene av to eller flere søk i en enkelt resultat som inkluderer alle rader som tilhører alle spørsmål i eu. I enkle termer, er det kombinerer to eller flere rad sett og holder duplikater.

    For eksempel, bordet ‘A’ har 1,2, og 3 og tabell ‘B’ har 3,4,5.,iv – >

    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    VELG 1-ID
    UNION
    VELG 2
    UNION
    VELG 3
    )
    UNION ALLE
    (
    VELG 3
    UNION
    VELG 4
    UNION
    VELG 5
    );

    I utgang, kan du se alle radene som inneholder gjentatte oppføringer som godt.,>4

    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    VELG 1-ID
    UNION
    VELG 2
    UNION
    VELG 3
    )
    møtes hver
    (
    VELG 3
    UNION
    VELG 4
    UNION
    VELG 5
    );

    raden ‘3’ er felles mellom de to resultatsett.,

    UNNTATT

    BORTSETT fra operatøren viser rader i den første som ikke er i den andre.,/div>

    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    VELG 1
    UNION
    VELG 2
    UNION
    VELG 3
    )
    med UNNTAK
    (
    VELG 3 B
    UNION
    VELG 4
    UNION
    VELG 5
    );

    Liste navnet-felles rader fra det første settet.,

    Merk: Det er svært enkelt å visualisere et sett operatøren med en Venn-diagram, hvor hver av tabellene er representert ved kryssende former. Kryssene av figurene, hvor bordene overlapper hverandre, er de radene der en betingelse er oppfylt.,olumns som er definert i hver spørring må ha samme rekkefølge

  • Påfølgende SQL-setningen rad sett må matche data type av den første spørringen
  • Parentes er lov til å konstruere andre operatører i samme setning
  • Det mulig å ha en ORDER BY-setningsdel, men det skal ikke være den siste setningen i SQL
  • GRUPPE AV, og etter å HA klausuler kan brukes til individuelle spørring
  • Merk:

    1. Alle av disse Sett operatører fjerne duplikater, bortsett fra Union Alle operatør
    2. output kolonne navn er referert fra den første spørringen jeg.,e. når vi kjører VELG uttalelser med noen av de faste operatører og resultat sett av hver av de spørsmål som kan ha forskjellige kolonne navn, så resultatet av SELECT-setning viser kolonnen navn fra den første spørringen i drift.
    3. SQL DELTA oftere brukt kombinere kolonner fra flere relaterte tabeller mens ANGI Operatører kombinerer rader fra flere tabeller.,
    4. Når uttrykket typer er den samme, men forskjellige i presisjon, omfang eller lengde, resultatet er fastsatt basert på de samme reglene for å kombinere uttrykk

    Eksempel:

    følgende T-SQL-spørringer er forberedt og kjøre mot Adventureworks2014 database. Du kan laste ned eksempel AdventireWorks2014 database her

    1. Hvordan du kan bruke enkle SQL Union punkt i select-uttrykk

      I dette eksempelet, resultatet settet inneholder en tydelig sett med rader fra den første og andre sett.,Det følgende eksemplet er basert på regel 1, 3 & 5.,

      VELG 1
      UNION
      VELG 2
      UNION
      VELG 3
      )
      UNION
      (
      VELG 3 B
      UNION
      VELG 4
      UNION
      VELG 5
      )
      UNION ALLE
      (
      VELG 8 c
      UNION
      VELG 9
      UNION
      VELG 1
      )
      ) T;

      output er kombinasjonen av Union og Union Alle operatører ved hjelp av parenteser.,

    2. Hvordan bruke SQL Union med spørsmål som har WHERE

      følgende eksempelet viser bruk av Union i to uttalelser med en WHERE og ORDER BY-setningsdel.,

      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 Produksjonen.ProductModel P2
      HVOR P2.ProductModelID I(3, 4)
      BESTILLING AV P1.Navn;

    3. Hvordan å bruke SELECT INN punkt med SQL Union

      følgende eksempel oppretter en ny dbo.dummy-tabellen ved hjelp INN klausul i den første SELECT-setning som inneholder den endelige resultat av Unionen av kolonnene ProductModel og navn fra to forskjellige resultatsett., I dette tilfellet, det er hentet fra den samme tabellen, men i en reell situasjon, dette kan også være to forskjellige tabeller. Det følgende eksemplet er basert på regel 1 , 2 og 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. Hvordan bruke SQL Union med spørsmål som har en WHERE og ORDER BY-setningsdel

      Dette er bare mulig når vi bruker TOPP eller samlede funksjoner i hver select-setning av Union-operatoren. I dette tilfellet, topp 10 rader er listet opp fra hver resultat og kombinerte rader ved hjelp av Union punkt for å få et endelig resultat. Du ser også at rekkefølgen av punkt er plassert i alle select-setning.,

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

      VELG.ModelID,
      på.,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)
      REKKEFØLGE ETTER Navn DESC
      ) b;

    5. Hvordan bruk av SQL Union og SQL Pivot

      I det følgende eksemplet, vi prøver å kombinere mer enn ett sett av resultater. I en reell situasjon, du kan få økonomiske tall fra ulike regioner eller avdelinger og tabeller kan ha de samme kolonnene og data typer, men du ønsker å sette dem i ett sett med rader og i en enkelt rapport., I et slikt scenario, vil du bruke Union punkt, og det er veldig lett å kombinere resultater og omforme data til en mer meningsfylt rapporten.

      I dette eksempelet ProductModel er kategorisert i Top10, Top100 -, Topp-100 og transformere den rader som et samlet sett av verdier inn i de respektive kolonnene. Det følgende eksemplet er basert 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(Top100) Top100,
      MAX(Top1000) Top100
      FRA
      (
      SELECT COUNT(*) Top10,
      0 Top100,
      0 Top1000
      FRA Produksjonen.,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-verdier er svært viktig med et Sett Operatører og blir behandlet som annenrangs database borgere. Fordi Nuller anses som unike og om to rader som har en NULL i samme kolonne, da ville de bli betraktet som identiske, så i dette tilfellet, du er faktisk å sammenligne en NULL til en NULL og komme likestilling. I det følgende eksemplet, kan du se bruk av NULL-verdier. I dette tilfellet er det drives med den samlede funksjonen, maks.,

      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(Top100) Top100,
      MAX(Top1000) Top100
      FRA
      (
      SELECT COUNT(*) Top10,
      NULL Top100,
      NULL Top1000
      FRA Produksjonen.,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 bruke SQL Union med Gruppen og Ha klausuler

    Følgende eksempler bruker Union-operatoren til å kombinere resultatet av tabellen at alle har betinget punkt som er definert ved hjelp av grupper av og Ha klausul.

    lastname er analysert ved å spesifisere forhold i det å ha klausul.

    følgende eksempel er basert på regel 5.,

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

    VELG pp.etternavn,
    – COUNT(*) repeatedtwice,
    0 Repeatedthrice
    FRA Personen.Person SOM pp
    BLI med HumanResources.Ansatt SOM e PÅ e.BusinessEntityID = pp.,BusinessEntityID
    GRUPPE AV pp.etternavn
    etter å HA COUNT(*) = 2
    UNION
    VELG pp.Etternavn,
    0,
    – COUNT(*) NtoZRange
    FRA Person.Person SOM pp
    BLI med HumanResources.Ansatt SOM e PÅ e.BusinessEntityID = pp.BusinessEntityID
    GRUPPE AV pp.,Etternavn
    etter å HA COUNT(*) > 2;

    Vi kan se at de siste navnene er hentet inn på to ulike kolonner som bruker Union-operatoren

    Det er alt for nå…

    Oppsummering

    så langt, det har vi gjort ulike valg og regler for å bruke Satt operatører og forstå når du skal bruke dem. Når man skal avgjøre om du skal bruke Union vs Union Alle det er et par punkter du bør vurdere., Bruk Union Alle hvis du vet at resultatet sett fra flere spørringer ikke overlapper eller generere duplikater og husk, hvis du trenger å bruke parenteser, kan du gjøre det. Du kan også pivot og forvandle utgang.

    Bare sørg for at dine data typer match opp, og hvis du trenger å gjøre en BESTILLING, gjør det på slutten etter at du har kjørt alle de satt spørringer. Av natur, når det kommer til Union vs Union Alle, Union Alle er raskere enn Union, som Union operatører medføre ekstra overhead å eliminere duplikater.

    jeg håper du likte denne artikkelen på SQL-Union-operatoren., Føl deg fri til å stille spørsmål i kommentarfeltet under.

    • Forfatter
    • Siste Innlegg
    Jeg er en Database teknolog med 11+ år av rike, hands-on erfaring på Database teknologi. Jeg er en Microsoft Certified Professional og støttet med en Grad i Master av dataprogram.
    Min spesialitet ligger i å utforme & implementere Høy tilgjengelighet løsninger og cross-platform DB Migrasjon., De teknologier som for tiden jobber på er SQL Server, PowerShell, Oracle og MongoDB.,
    Vis alle innlegg av Prashanth Jayaram

    Siste innlegg av Prashanth Jayaram (se alle)
    • En rask oversikt over databasen revisjon i SQL – januar 28, 2021
    • Hvordan å sette opp Azure Synkronisere Data mellom Azure SQL-databaser, og lokale SQL Server – 20. januar 2021
    • Hvordan for å utføre Azure SQL database Import/Eksport operasjoner ved hjelp av PowerShell – 14. januar 2021


    Legg igjen en kommentar

    Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *