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:

PostgreSQL Union

Pris:

PostgreSQL Union

La oss kjøre følgende kommando:

SELECT id
FROM Book
UNION
SELECT id
FROM Price;

Kommandoen vil returnere følgende:

PostgreSQL Union

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:

PostgreSQL Union Alle

Pris:

PostgreSQL Union Alle

Kjør følgende kommando:

 
SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Den skal returnere følgende:

PostgreSQL Union Alle

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:

REKKEFØLGE ETTER

Pris 2:

REKKEFØLGE ETTER

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:

REKKEFØLGE ETTER

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:

REKKEFØLGE ETTER

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

  1. Fra navigasjonslinjen til venstre klikker du på Databaser.
  2. Klikk på Demo.

Bruk PostgreSQL Union ved hjelp av pgAdmin

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.

Bruk PostgreSQL Union ved hjelp av pgAdmin

Den skal returnere følgende:

Bruk PostgreSQL Union ved hjelp av pgAdmin

Union Alle

Trinn 1) Logg på pgAdmin-kontoen din.

Trinn 2)

  1. Fra navigasjonslinjen til venstre klikker du på Databaser.
  2. Klikk på Demo.

Bruk PostgreSQL Union Alle ved hjelp av pgAdmin

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.

Bruk PostgreSQL Union Alle ved hjelp av pgAdmin

Den skal returnere følgende:

Bruk PostgreSQL Union Alle ved hjelp av pgAdmin

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:

Bruk PostgreSQL BESTILL VED Å bruke pgAdmin

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