PostgreSQL Union, Union ALLE med eksempler
Hva er PostgreSQL Union?
De PostgreSQL UNION-operatoren brukes til å kombinere resultatsett fra mer enn én SELECT-setning til ett resultatsett. Eventuelle dupliserte rader fra resultatene av SELECT-setningene blir eliminert. UNION-operatøren jobber under to forhold:
- SELECT-spørringene MÅ returnere et tilsvarende antall spørringer.
- Datatypene for alle tilsvarende kolonner må være kompatible.
UNION-operatoren brukes vanligvis til å kombinere data fra relaterte tabeller som ikke er normalisert perfekt.
syntax
SELECT expression_1, expression_2, ... expression_n FROM tables [WHERE condition(s)] UNION SELECT expression_1, expression_2, ... expression_n FROM tables [WHERE condition(s)];
Her er en forklaring på parameterne ovenfor:
Uttrykket_1, uttrykk_2, … uttrykk_n er beregningene eller kolonnene du må hente.
Tabellene er tabellene du må hente poster fra.
WHERE-betingelsen(e) er betingelsene som må være oppfylt for at poster skal kunne hentes.
Merk: siden UNION-operatøren ikke returnerer duplikater, vil bruken av UNION DISTINCT ikke ha noen innvirkning på resultatene.
PostgreSQL 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 id FROM Book UNION SELECT id FROM Price;
Kommandoen vil returnere følgende:
ID-kolonnen vises i både bok- og pristabellen. Det vises imidlertid bare én gang i resultatet. Grunnen er det PostgreSQL UNION-operatøren returnerer ikke duplikater.
PostgreSQL Union Alle
Denne operatoren kombinerer resultatsett fra mer enn én SELECT-setning uten å fjerne duplikater. Operatøren krever at hver SELECT-setning har et lignende antall felt i resultatsett med lignende datatyper.
Syntaks:
SELECT expression_1, expression_2, ... expression_n FROM tables [WHERE condition(s)] UNION ALL SELECT expression_1, expression_2, ... expression_n FROM tables [WHERE condition(s)];
Her er en forklaring på parameterne ovenfor:
Uttrykket_1, uttrykk_2, … uttrykk_n er beregningene eller kolonnene du må hente.
Tabellene er tabellene du må hente poster fra.
WHERE-betingelsen(e) er betingelsene som må være oppfylt for at poster skal kunne hentes.
Merk: Begge uttrykkene må ha like mange uttrykk.
Vi vil bruke følgende tabeller:
Bok:
Pris:
Kjør følgende kommando:
SELECT id FROM Book UNION ALL SELECT id FROM price;
Den skal returnere følgende:
Duplikatene er ikke fjernet.
REKKEFØLGE ETTER
De PostgreSQL UNION-operatoren kan brukes sammen med ORDER BY-klausulen for å bestille søkeresultatene. For å demonstrere dette vil vi bruke følgende tabeller:
Pris:
Pris 2:
Her er kommandoen som viser hvordan du bruker UNION-operatøren sammen med ORDER BY-klausulen:
SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price;
Kommandoen vil returnere følgende:
Postene ble sortert etter priskolonnen. Klausulen sorterer postene i stigende rekkefølge som standard. For å bestille dem i synkende rekkefølge, legg til DESC-klausulen som vist nedenfor:
SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price DESC;
Kommandoen vil returnere følgende:
Postene er sortert basert på priskolonnen i synkende rekkefølge.
Når skal man bruke Union og Når skal man bruke Union alle?
Bruk UNION-operatoren når du har flere tabeller med 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 dupliserte poster.
Bruker pgAdmin
La oss nå se hvordan alle tre handlingene utførte med pgAdmin.
Hvordan bruke PostgreSQL Union ved hjelp av pgAdmin
Følgende er trinn for trinn prosess for hvordan du bruker PostgreSQL Union ved hjelp av pgAdmin
For å oppnå det samme gjennom pgAdmin, gjør dette:
Trinn 1) Login
Logg på pgAdmin-kontoen din.
Trinn 2) Klikk på Databaser
- Fra navigasjonslinjen til venstre klikker du på Databaser.
- Klikk på Demo.
Trinn 3) Skriv inn søket
Skriv inn søket i spørringsredigeringsprogrammet:
SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price DESC;
Trinn 4) Klikk på Utfør-knappen.
Deretter klikker du på Utfør-knappen. Som vist på bildet nedenfor.
Den skal returnere følgende:
Union Alle
Trinn 1) Logg på pgAdmin-kontoen din.
Trinn 2)
- Fra navigasjonslinjen til venstre klikker du på Databaser.
- Klikk på Demo.
Trinn 3) Skriv inn søket i spørringsredigeringsprogrammet:
SELECT id FROM Book UNION ALL SELECT id FROM 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 id FROM Book UNION ALL SELECT id FROM price ORDER BY id;
Kommandoen vil returnere følgende:
Resultatene er bestilt.
Oppsummering
- De PostgreSQL UNION-operatør kombinerer resultater fra mer enn én SELECT-setning i ett resultatsett.
- UNION-operatøren returnerer ikke dupliserte poster.
- For å bestille resultatene, kombiner det med ORDER BY-klausulen.
- UNION ALL-operatoren kombinerer resultater fra mer enn én SELECT-setning til ett resultatsett.
- UNION ALL-operatøren fjerner ikke duplikater.
Last ned databasen som brukes i denne opplæringen