Kombiner Rader ved Hjelp av UNION


Kombiner Rader ved Hjelp av UNION

I denne leksjonen skal vi snakke om UNION punkt. Du kan bruke UNION punkt å kombinere tabell rader fra to forskjellige spørsmål til ett resultat. I motsetning til en del i, som kombinerer kolonner fra forskjellige tabeller, en union som kombinerer rader fra ulike tabeller. Her er en illustrasjon av hva en UNION ser ut som

Norge

Alle eksempler for denne leksjonen er basert på Microsoft SQL Server Management Studio og AdventureWorks2012 database., Du kan komme i gang med disse gratis verktøyene ved hjelp av min Veileder Komme i Gang ved Hjelp av SQL Server.

I SQL dette utsagnet ser ut som

SELECT columnlistFROM table1UNIONSELECT columnlistFROM table2

for å union to tabeller det er et par av krav:

  1. antall kolonner må være den samme for begge velg uttalelser.
  2. kolonnene, i bestillingen, må være av samme datatype.

Når rader er kombinert dupliserte rader er eliminert. Hvis du ønsker å beholde alle rader fra både select-setning av resultater bruk ALLE søkeord.,

Eksempler på

Union to tabeller

Tenk deg at du ble bedt om å gi en liste over alle AdventureWorks2012 produkt kategorier og underkategorier. For å gjøre dette kan du skrive to separate spørsmål, og gir to separate resultater, for eksempel to regneark, eller du kan bruke UNION punkt å levere et kombinert resultat:

SELECT C.NameFROM Production.ProductCategory AS CUNION ALLSELECT S.NameFROM Production.ProductSubcategory AS S

Fra dette får du en samlet oversikt over navn, men antar at du ønsket å vite hvilket navn som ble kategorier versus underkategorier., For å gjøre dette kan du legge til en ny kolonne som angir kategori, skriv:

SELECT 'category', C.NameFROM Production.ProductCategory AS CUNION ALLSELECT 'subcategory', S.NameFROM Production.ProductSubcategory AS S

Union versus Union Alle

forskjellen mellom UNION og UNION ALLE er at med UNION returnerer et unikt sett med rader fra union resultat, mens UNION ALLE returer hver rad.

Eksempel:

SELECT person.Address.CityFROM person.Address

Returnerer 19614 rader.

SELECT person.Address.CityFROM person.AddressUNIONSELECT person.Address.CityFROM person.Address

Returnerer 575 rader, som er antall forskjellige city navn i tabellen. Kjører UNION Alle returer hele settet av city navn to ganger:

SELECT person.Address.CityFROM person.AddressUNION ALLSELECT person.Address.CityFROM person.Address

Den returnerer 39228 rader.,

Som du kan se, er det en stor forskjell med å bruke ALLE kvalifisering. Når det ikke er brukt, de resultater som er distinkte verdier. Duplikater er ikke bare eliminert mellom rader fra hvert resultat, men også innenfra.

Union tre tabeller

la oss Anta at ledelsen ønsker en samlet liste over personer, leverandører, og store navn som er identifisert av kilde.

for Å gjøre dette, må vi opprette tre separate søk og deretter bruke union punkt å sette dem sammen. Vi vil deretter bestille den listen.,

Ved første øyekast kan det hende du tror REKKEFØLGEN AV klausulen, vil kun gjelde for den siste select-setning, men faktum er at det gjelder alle resultatene som returneres av unionen. Databasemotoren første prosessen alle union uttalelser da den rekkefølgen av.

Hvis du er i tvil om behandling av ordre, kan du bruke parentes «()» til å styre rekkefølgen av evaluering mye som du kan med uttrykk. Her er hva den uttalelsen, er det generelt ville se ut med parentes:

Legg igjen en kommentar

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

Hopp til verktøylinje