SQLShack (Norsk)
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
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:
- Union
- Union Alle
- UNNTATT
- 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.,
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 – >
I utgang, kan du se alle radene som inneholder gjentatte oppføringer som godt.,>4
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>
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
Merk:
- Alle av disse Sett operatører fjerne duplikater, bortsett fra Union Alle operatør
- 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.
- SQL DELTA oftere brukt kombinere kolonner fra flere relaterte tabeller mens ANGI Operatører kombinerer rader fra flere tabeller.,
- 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
-
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 1UNIONVELG 2UNIONVELG 3)UNION(VELG 3 BUNIONVELG 4UNIONVELG 5)UNION ALLE(VELG 8 cUNIONVELG 9UNIONVELG 1)) T;output er kombinasjonen av Union og Union Alle operatører ved hjelp av parenteser.,
-
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
12345678910SELECT P1.ProductModelID,P1.NameFROM Production.ProductModel P1WHERE ProductModelID IN(3, 4)UNIONSELECT P2.ProductModelID,P2.,NavnFRA Produksjonen.ProductModel P2HVOR P2.ProductModelID I(3, 4)BESTILLING AV P1.Navn; -
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.
12345678910111213141516DROP TABLE IF EXISTS dbo.,dummy;SELECT P1.ProductModelID,P1.NameINTO dummyFROM Production.ProductModel P1WHERE ProductModelID IN(3, 4)UNIONSELECT P2.ProductModelID,P2.NameFROM Production.ProductModel P2WHERE P2.ProductModelID IN(3, 4)ORDER BY P1.Name;GOSELECT *FROM dbo.,Dummy; -
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.,
123456789101112131415161718192021VELG.ModelID,på.,NameFROM(SELECT TOP 10 ProductModelID ModelID,NameFROM Production.ProductModelWHERE ProductModelID NOT IN(3, 4)ORDER BY Name DESC) aUNIONSELECT b.ProductModelID,b.NameFROM(SELECT TOP 10 ProductModelID,NameFROM Production.,ProductModelHVOR ProductModelID I(5, 6)REKKEFØLGE ETTER Navn DESC) b; -
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>
23456789101112131415161718192021222324SELECT MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100FRA(SELECT COUNT(*) Top10,0 Top100,0 Top1000FRA Produksjonen.,ProductModelWHERE ProductModelID < 10UNIONSELECT 0,COUNT(*),0FROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT 0,0,COUNT(*)FROM Production.,ProductModelHVOR 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.,
23456789101112131415161718192021222324SELECT MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100FRA(SELECT COUNT(*) Top10,NULL Top100,NULL Top1000FRA Produksjonen.,ProductModelWHERE ProductModelID < 10UNIONSELECT NULL,COUNT(*),NULLFROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT NULL,NULL,COUNT(*)FROM Production.,ProductModelHVOR 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
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
- 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