Hva er PostgreSQL Union?
PostgreSQL UNION-operatøren brukes til å kombinere resultatsett fra mer enn en SELECT-setning til ett resultatsett. Eventuelle dupliserte rader fra resultatene av SELECT-setningene elimineres. UNION-operatøren jobber under to forhold:
- SELECT-spørringene MÅ returnere et tilsvarende antall spørsmål.
- Datatypene til alle tilsvarende kolonner må være kompatible.
UNION-operatøren brukes normalt til å kombinere data fra relaterte tabeller som ikke er normalisert perfekt.
I denne PostgreSQL-opplæringen lærer du:
- Hva er PostgreSQL Union?
- Syntaks
- Union
- Union All
- REKKEFØLGE ETTER
- Når skal jeg bruke Union og når skal jeg bruke Union all?
- Bruke pgAdmin
Syntaks
SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNIONSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];
Her er en forklaring på parametrene ovenfor:
Expression_1, expression_2,… expression_n er beregningene eller kolonnene du trenger å hente.
Tabellene er tabellene som du trenger for å hente poster.
WHERE-betingelsen (e) er betingelsene som må oppfylles for at poster skal bli hentet.
Merk: at siden UNION-operatøren ikke returnerer duplikater, vil bruk av UNION DISTINCT ikke ha noen innvirkning på resultatene.
Union
UNION-operatøren fjerner duplikater. La oss demonstrere dette.
Vi har en database som heter Demo med følgende tabeller:
Bok:
Pris:
La oss kjøre følgende kommando:
SELECT idFROM BookUNIONSELECT idFROM Price;
Kommandoen vil returnere følgende:
ID-kolonnen vises i både Bok- og Pris-tabellene. Imidlertid vises det bare en gang i resultatet. Årsaken er at PostgreSQL UNION-operatøren ikke returnerer duplikater.
Union All
Denne operatøren kombinerer resultatsett fra mer enn én SELECT-setning uten å fjerne duplikater. Operatøren krever at hver SELECT-setning har et tilsvarende antall felt i resultatsett av lignende datatyper.
Syntaks:
SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNION ALLSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];
Her er en forklaring på parametrene ovenfor:
Expression_1, expression_2,… expression_n er beregningene eller kolonnene du trenger å hente.
Tabellene er tabellene som du trenger for å hente poster.
WHERE-betingelsen (e) er betingelsene som må oppfylles for at poster skal bli hentet.
Merk: Begge uttrykkene må ha like mange uttrykk.
Vi vil bruke følgende tabeller:
Bok:
Pris:
Kjør følgende kommando:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Den skal returnere følgende:
Duplikatene er ikke fjernet.
REKKEFØLGE ETTER
PostgreSQL UNION-operatøren kan brukes sammen med ORDER BY-klausulen for å bestille søkeresultatene. For å demonstrere dette vil vi bruke følgende tabeller:
Pris:
Pris2:
Her er kommandoen som viser hvordan du bruker UNION-operatøren sammen med ORDER BY-setningen:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price;
Kommandoen vil returnere følgende:
Postene ble bestilt av priskolonnen. Klausulen ordner postene i stigende rekkefølge som standard. For å bestille dem i synkende rekkefølge, legg til DESC-setningen som vist nedenfor:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
Kommandoen vil returnere følgende:
Postene er bestilt basert på priskolonnen i synkende rekkefølge.
Når skal jeg bruke Union og når skal jeg bruke Union all?
Bruk UNION-operatøren når du har flere tabeller med en lignende struktur, men delt av en grunn. Det er bra når du trenger å fjerne / eliminere dupliserte poster.
Bruk UNION ALL-operatøren når du ikke trenger å fjerne / eliminere duplikatposter.
Bruke pgAdmin
La oss nå se hvordan alle tre handlingene ble utført ved hjelp av pgAdmin.
Union
For å oppnå det samme gjennom pgAdmin, gjør du dette:
Trinn 1) Logg inn på pgAdmin-kontoen din.
Steg 2)
- Fra navigasjonslinjen til venstre - Klikk på Databaser.
- Klikk på Demo.
Trinn 3) Skriv inn spørringen i spørreeditoren:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
Trinn 4) Klikk på Utfør-knappen.
Den skal returnere følgende:
Union All
Trinn 1) Logg inn på pgAdmin-kontoen din.
Steg 2)
- Klikk på Databaser fra navigeringslinjen til venstre.
- Klikk på Demo.
Trinn 3) Skriv inn spørringen i spørreeditoren:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Trinn 4) Klikk på Utfør-knappen.
Den skal returnere følgende:
REKKEFØLGE ETTER
UNION ALL-operatøren kan kombineres med ORDER BY-klausulen for å bestille resultater i resultatsettet. For eksempel:
SELECT idFROM BookUNION ALLSELECT idFROM priceORDER BY id;
Kommandoen vil returnere følgende:
Resultatene er bestilt.
Sammendrag:
- PostgreSQL UNION-operatøren kombinerer resultater fra mer enn én SELECT-setning i ett resultatsett.
- UNION-operatøren returnerer ikke duplikatposter.
- For å bestille resultatene, kombiner det med ORDER BY-setningen.
- UNION ALL-operatøren kombinerer resultater fra mer enn én SELECT-setning i ett resultatsett.
- UNION ALL-operatøren fjerner ikke duplikater.
Last ned databasen som brukes i denne veiledningen