PostgreSQL Union, Union ALLE med eksempler
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ørgslerne SKAL returnere et tilsvarende antal forespørgsler.
- 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-operatøren ikke returnerer dubletter, vil brugen af UNION DISTINCT ikke have nogen indflydelse på resultaterne.
PostgreSQL Union
UNION-operatøren fjerner dubletter. Lad os demonstrere dette.
Vi har en database ved navn 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-operatøren 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 udtryk skal have lige mange 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 alle?
Brug UNION-operatoren, når du har flere tabeller med en lignende struktur, men opdelt af en grund. Det er godt, når du skal fjerne/eliminere duplikerede poster.
Brug UNION ALL-operatoren, når du ikke behøver at fjerne/eliminere duplikerede poster.
Bruger pgAdmin
Lad os nu se, hvordan alle tre handlinger udførte ved hjælp af pgAdmin.
Sådan bruges den: PostgreSQL Union ved hjælp af pgAdmin
Følgende er trin for trin proces om, hvordan du bruger PostgreSQL Union ved hjælp af pgAdmin
For at opnå det samme gennem pgAdmin, gør dette:
Trin 1) Login
Log ind på din pgAdmin-konto.
Trin 2) Klik på Databaser
- Fra navigationslinjen til venstre - Klik på Databaser.
- Klik på Demo.
Trin 3) Indtast forespørgslen
Indtast forespørgslen i forespørgselseditoren:
SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price DESC;
Trin 4) Klik på knappen Udfør.
Klik derefter på knappen Udfør. Som vist på billedet nedenfor.
Det skal returnere følgende:
Union Alle
Trin 1) Log ind på din pgAdmin-konto.
Trin 2)
- Klik på Databaser i navigationslinjen til venstre.
- Klik 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.
Resumé
- PostgreSQL UNION-operatør kombinerer resultater fra mere end én SELECT erklæring i ét resultatsæt.
- UNION-operatøren returnerer ikke duplikerede poster.
- For at bestille resultaterne skal du kombinere det med ORDER BY-klausulen.
- UNION ALL-operatoren kombinerer resultater fra mere end én SELECT-sætning til ét resultatsæt.
- UNION ALL-operatøren fjerner ikke dubletter.
Download databasen brugt i denne vejledning