PostgreSQL Union, Union ALLE med eksempler
⚡ Smart opsummering
PostgreSQL UNION kombinerer resultaterne af to eller flere SELECT-sætninger i et enkelt resultatsæt og fjerner dubletter, mens UNION ALL beholder alle rækker, hvilket giver en hurtigere løsning, når dubletter ikke betyder noget.

Hvad er PostgreSQL Union?
PostgreSQL UNION-operatoren bruges til at kombinere resultatsæt fra mere end én SELECT-sætning til ét resultatsæt. Alle duplikerede rækker fra resultaterne af SELECT-sætningerne elimineres. UNION-operatøren arbejder under to forhold:
- SELECT-forespørgsler skal returnere det samme antal kolonner.
- Datatyperne for alle tilsvarende kolonner skal være kompatible.
UNION-operatoren bruges normalt til at kombinere data fra relaterede tabeller, der ikke er blevet normaliseret perfekt.
Syntaks
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å ovenstående parametre:
Udtrykket_1, udtryk_2, … udtryk_n er de beregninger eller kolonner, du skal hente.
Tabellerne er de tabeller, hvorfra du skal hente poster.
WHERE-betingelserne er de betingelser, der skal være opfyldt, for at registreringer kan hentes.
Bemærk: Da UNION-operatoren ikke returnerer dubletter, vil brugen af UNION DISTINCT ikke have nogen indflydelse på resultaterne.
PostgreSQL Union
UNION-operatoren fjerner dubletter på samme måde som VÆLG DISTINKT gør. Lad os demonstrere dette. Vi har en database med navnet Demo med følgende tabeller:
Bestil:
Pris:
Lad os køre følgende kommando:
SELECT id FROM Book UNION SELECT id FROM Price;
Kommandoen returnerer følgende:
Id-kolonnen vises i både bog- og pristabellerne. Det vises dog kun én gang i resultatet. Årsagen er det PostgreSQL UNION-operatoren returnerer ikke dubletter.
PostgreSQL Union Alle
Denne operator kombinerer resultatsæt fra mere end én SELECT-sætning uden at fjerne dubletter. Operatøren kræver, at hver SELECT-sætning har et tilsvarende antal felter i resultatsæt 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å ovenstående parametre:
Udtrykket_1, udtryk_2, … udtryk_n er de beregninger eller kolonner, du skal hente.
Tabellerne er de tabeller, hvorfra du skal hente poster.
WHERE-betingelserne er de betingelser, der skal være opfyldt, for at registreringer kan hentes.
Bemærk: Begge SELECT-sætninger skal have et lige antal udtryk.
Vi vil bruge følgende tabeller:
Bestil:
Pris:
Kør følgende kommando:
SELECT id FROM Book UNION ALL SELECT id FROM price;
Det skal returnere følgende:
Dubletterne er ikke blevet fjernet.
BESTIL BY
PostgreSQL UNION-operatoren kan bruges sammen med ORDER BY-klausulen til at bestille forespørgselsresultaterne. For at demonstrere dette vil vi bruge følgende tabeller:
Pris:
Pris 2:
Her er kommandoen, der viser, hvordan man bruger UNION-operatoren sammen med ORDER BY-sætningen:
SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price;
Kommandoen returnerer følgende:
Posterne blev sorteret efter priskolonnen. Klausulen sorterer som standard posterne i stigende rækkefølge. For at bestille dem i faldende rækkefølge skal du tilføje DESC-klausulen som vist nedenfor:
SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price DESC;
Kommandoen returnerer følgende:
Posterne er sorteret ud fra priskolonnen i faldende rækkefølge.
Hvornår skal man bruge Union, og hvornår skal man bruge Union All?
Brug UNION-operatoren, når du har flere tabeller med en lignende struktur, men som er opdelt af en grund. Den er god, når du har brug for at fjerne eller eliminere dubletter.
Brug UNION ALL-operatoren, når du ikke har brug for at fjerne eller eliminere dubletter.
Bruger pgAdmin
Lad os nu se, hvordan alle tre handlinger udføres ved hjælp af pgAdmin.
Sådan bruges den: PostgreSQL Union ved hjælp af pgAdmin
Følgende er en trin-for-trin proces til brug PostgreSQL UNION via pgAdmin:
Trin 1) Log ind på din pgAdmin-konto.
Trin 2) Klik på Databaser i navigationslinjen til venstre, og klik derefter på Demo.
Trin 3) Indtast forespørgslen i forespørgselseditoren:
SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price DESC;
Trin 4) Klik på knappen Udfør.
Det skal returnere følgende:
Union Alle
Trin 1) Log ind på din pgAdmin-konto.
Trin 2) Klik på Databaser i navigationslinjen til venstre, og klik derefter på Demo.
Trin 3) Indtast forespørgslen i forespørgselseditoren:
SELECT id FROM Book UNION ALL SELECT id FROM price;
Trin 4) Klik på knappen Udfør.
Det skal returnere følgende:
BESTIL BY
UNION ALL-operatoren kan kombineres med ORDER BY-klausulen for at bestille resultater i resultatsættet. For eksempel:
SELECT id FROM Book UNION ALL SELECT id FROM price ORDER BY id;
Kommandoen returnerer følgende:
Resultaterne er bestilt.
Download databasen brugt i denne vejledning

















