Kombiner Bordrækker ved hjælp af UNION


Kombiner Bordrækker ved hjælp af UNION

i denne lektion skal vi tale om UNIONSKLAUSULEN. Du kan bruge UNION-klausulen til at kombinere tabelrækker fra to forskellige forespørgsler til et resultat. I modsætning til en join, som kombinerer kolonner fra forskellige tabeller, En union kombinerer rækker fra forskellige tabeller. Her er en illustration af, hvad en EU-ligner

Fagforeninger

Alle de eksempler, for denne lektion er baseret på Microsoft SQL Server Management Studio og AdventureWorks2012 database., Du kan komme i gang med at bruge disse gratis værktøjer ved hjælp af min Guide Kom godt i gang ved hjælp af s .l Server.

I SQL denne erklæring ligner

SELECT columnlistFROM table1UNIONSELECT columnlistFROM table2

for at eu to tabeller, der er et par krav:

  1. antallet af kolonner skal være den samme for begge select-sætninger.
  2. kolonnerne skal i rækkefølge være af samme datatype.

Når rækker kombineres duplikat rækker elimineres. Hvis du vil beholde alle rækker fra begge select-sætningens resultater, skal du bruge alle søgeord.,

eksempler

Union to tabeller

Antag, at du blev bedt om at angive en liste over alle Adventure .orks2012 produktkategorier og underkategorier. For at gøre dette, kunne du skrive på to forskellige forespørgsler og give to separate resultater, som to regneark, eller du kan bruge EU-delsætning til at levere et kombineret resultat:

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

Fra dette får du en samlet liste over navne, men antag, at du ønskede at vide, hvis navn var kategorier versus underkategorier., For at gøre dette kan du tilføje en ny kolonne, der angiver kategortypen:

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

Union versus Union All

forskellen mellem UNION og UNION alt er, at med UNION returnerer et unikt sæt rækker fra union-resultatet; hvorimod UNION all returnerer hver række.

Eksempel:

SELECT person.Address.CityFROM person.Address

Returnerer 19614 rækker.

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

returnerer 575 rækker, hvilket er antallet af forskellige bynavne i tabellen. Running UNION alle returnerer hele sættet af bynavne to gange:

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

det returnerer 39228 rækker.,

som du kan se, er der en stor forskel med at bruge All qualifualifier. Når de ikke bruges, er resultaterne forskellige værdier. Duplikater elimineres ikke kun mellem rækker fra hvert resultat, men også indefra.

Union tre tabeller

Antag, at ledelsen ønsker en kombineret liste over personer, leverandører og butiksnavne identificeret efter kilde.for at gøre dette opretter vi tre separate forespørgsler og bruger derefter unionsklausulen til at sammensætte dem. Vi bestiller derefter listen.,

Ved første øjekast tror du måske, at ORDER BY-klausulen kun gælder for den sidste select-erklæring, men det gælder faktisk for alle de resultater, som Unionen returnerer. Databasemotoren behandler først alle unionserklæringer derefter ordren efter.

Hvis du er i tvivl om behandlingsordren, kan du bruge parentes “()” til at kontrollere evalueringsrækkefølgen, ligesom du kan med udtryk. Sådan ser udsagnet generelt ud med parentes:

Skriv et svar

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

Videre til værktøjslinje