Hvad er PostgreSQL Union?
PostgreSQL UNION-operatøren bruges til at kombinere resultatsæt fra mere end en SELECT-sætning til et resultatsæt. Eventuelle duplikerede rækker fra resultaterne af SELECT-sætningerne elimineres. UNION-operatøren arbejder under to betingelser:
- SELECT-forespørgsler SKAL returnere et lignende antal forespørgsler.
- Datatyperne for alle tilsvarende kolonner skal være kompatible.
UNION-operatøren bruges normalt til at kombinere data fra relaterede tabeller, der ikke er blevet normaliseret perfekt.
I denne PostgreSQL-tutorial lærer du:
- Hvad er PostgreSQL Union?
- Syntaks
- Union
- Union All
- BESTIL BY
- Hvornår skal man bruge Union og hvornår skal man bruge Union all?
- Brug af 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å ovenstående parametre:
Udtrykket_1, udtryk_2, ... udtryk_n er de beregninger eller kolonner, du skal hente.
Tabellerne er de tabeller, hvorfra du har brug for at hente poster.
WHERE-betingelserne er de betingelser, der skal være opfyldt for at registreringer kan hentes.
Bemærk: at da UNION-operatøren ikke returnerer duplikater, vil brugen af UNION DISTINCT ikke have nogen indvirkning på resultaterne.
Union
UNION-operatøren fjerner dubletter. 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 idFROM BookUNIONSELECT idFROM Price;
Kommandoen returnerer følgende:
Id-kolonnen vises i både bog- og pristabellerne. Det vises dog kun en gang i resultatet. Årsagen er, at PostgreSQL UNION-operatøren ikke returnerer dubletter.
Union All
Denne operatør kombinerer resultatsæt fra mere end en SELECT-sætning uden at fjerne dubletter. Operatøren kræver, at hver SELECT-sætning har et tilsvarende antal felter i resultatsæt af 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å ovenstående parametre:
Udtrykket_1, udtryk_2, ... udtryk_n er de beregninger eller kolonner, du skal hente.
Tabellerne er de tabeller, hvorfra du har brug for at hente poster.
WHERE-betingelserne er de betingelser, der skal være opfyldt for at registreringer kan hentes.
Bemærk: Begge udtryk skal have samme antal udtryk.
Vi bruger følgende tabeller:
Bestil:
Pris:
Kør følgende kommando:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Den skal returnere følgende:
Dubletterne er ikke fjernet.
BESTIL BY
PostgreSQL UNION-operatøren kan bruges sammen med ORDER BY-klausulen til at bestille forespørgselsresultaterne. For at demonstrere dette vil vi bruge følgende tabeller:
Pris:
Pris2:
Her er kommandoen, der demonstrerer, hvordan man bruger UNION-operatøren sammen med ORDER BY-klausulen:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price;
Kommandoen returnerer følgende:
Optegnelserne blev bestilt af priskolonnen. Klausulen bestiller som standard posterne i stigende rækkefølge. For at ordne dem i faldende rækkefølge skal du tilføje DESC-klausulen som vist nedenfor:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
Kommandoen returnerer følgende:
Optegnelserne er bestilt baseret på priskolonnen i faldende rækkefølge.
Hvornår skal man bruge Union og hvornår skal man bruge Union all?
Brug UNION-operatøren, når du har flere tabeller med en lignende struktur, men opdelt af en grund. Det er godt, når du har brug for at fjerne / fjerne dublerede poster.
Brug UNION ALL-operatøren, når du ikke behøver at fjerne / eliminere duplikatposter.
Brug af pgAdmin
Lad os nu se, hvordan alle tre handlinger udføres ved hjælp af pgAdmin.
Union
For at opnå det samme gennem pgAdmin skal du gøre dette:
Trin 1) Log ind på din pgAdmin-konto.
Trin 2)
- Fra navigationslinjen til venstre - Klik på Databaser.
- Klik på Demo.
Trin 3) Skriv forespørgslen i forespørgselseditoren:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
Trin 4) Klik på knappen Udfør.
Den skal returnere følgende:
Union All
Trin 1) Log ind på din pgAdmin-konto.
Trin 2)
- Klik på Databaser i navigationslinjen til venstre.
- Klik på Demo.
Trin 3) Skriv forespørgslen i forespørgselseditoren:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Trin 4) Klik på knappen Udfør.
Den skal returnere følgende:
BESTIL BY
UNION ALL-operatøren kan kombineres med ORDER BY-klausulen for at bestille resultater i resultatsættet. For eksempel:
SELECT idFROM BookUNION ALLSELECT idFROM priceORDER BY id;
Kommandoen returnerer følgende:
Resultaterne er bestilt.
Resumé:
- PostgreSQL UNION-operatøren kombinerer resultater fra mere end en SELECT-sætning i et resultatsæt.
- UNION-operatøren returnerer ikke dubletter.
- For at bestille resultaterne skal du kombinere det med ORDER BY-klausulen.
- UNION ALL-operatøren kombinerer resultater fra mere end en SELECT-sætning i et resultatsæt.
- UNION ALL-operatøren fjerner ikke dubletter.
Download den database, der blev brugt i denne vejledning