Vad är PostgreSQL Union?
PostgreSQL UNION-operatören används för att kombinera resultatuppsättningar från mer än en SELECT-sats till en resultatuppsättning. Eventuella dubbletterader från resultaten av SELECT-uttalandena elimineras. UNION-operatören arbetar under två förhållanden:
- SELECT-frågorna MÅSTE returnera ett liknande antal frågor.
- Datatyperna för alla motsvarande kolumner måste vara kompatibla.
UNION-operatören används normalt för att kombinera data från relaterade tabeller som inte har normaliserats perfekt.
I denna PostgreSQL-handledning lär du dig:
- Vad är PostgreSQL Union?
- Syntax
- Union
- Union All
- SORTERA EFTER
- När ska man använda Union och när ska man använda Union all?
- Använda pgAdmin
Syntax
SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNIONSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];
Här är en förklaring för ovanstående parametrar:
Expression_1, expression_2,… expression_n är de beräkningar eller kolumner som du behöver hämta.
Tabellerna är de tabeller som du behöver för att hämta poster.
WHERE-villkoren är de villkor som måste uppfyllas för att poster ska hämtas.
Obs: att eftersom UNION-operatören inte returnerar dubbletter, kommer användningen av UNION DISTINCT inte att påverka resultatet.
Union
UNION-operatören tar bort dubbletter. Låt oss demonstrera detta.
Vi har en databas med namnet Demo med följande tabeller:
Bok:
Pris:
Låt oss köra följande kommando:
SELECT idFROM BookUNIONSELECT idFROM Price;
Kommandot returnerar följande:
Id-kolumnen visas i både bok- och pristabellerna. Det visas dock bara en gång i resultatet. Anledningen är att PostgreSQL UNION-operatören inte returnerar dubbletter.
Union All
Den här operatören kombinerar resultatuppsättningar från mer än ett SELECT-uttalande utan att ta bort dubbletter. Operatören kräver att varje SELECT-sats har ett liknande antal fält i resultatuppsättningar av liknande datatyper.
Syntax:
SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNION ALLSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];
Här är en förklaring för ovanstående parametrar:
Expression_1, expression_2,… expression_n är de beräkningar eller kolumner som du behöver hämta.
Tabellerna är de tabeller som du behöver för att hämta poster.
WHERE-villkoren är de villkor som måste uppfyllas för att poster ska hämtas.
Obs! Båda uttrycken måste ha lika många uttryck.
Vi använder följande tabeller:
Bok:
Pris:
Kör följande kommando:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Den ska returnera följande:
Dubblaten har inte tagits bort.
SORTERA EFTER
PostgreSQL UNION-operatören kan användas tillsammans med ORDER BY-klausulen för att beställa frågeresultaten. För att demonstrera detta kommer vi att använda följande tabeller:
Pris:
Pris2:
Här är kommandot som visar hur man använder UNION-operatören tillsammans med ORDER BY-satsen:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price;
Kommandot returnerar följande:
Posterna beställdes av priskolumnen. Klausulen ordnar posterna i stigande ordning som standard. För att ordna dem i fallande ordning, lägg till DESC-klausulen som visas nedan:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
Kommandot returnerar följande:
Posterna har beställts baserat på priskolumnen i fallande ordning.
När ska man använda Union och när ska man använda Union all?
Använd UNION-operatören när du har flera tabeller med en liknande struktur men delas av en anledning. Det är bra när du behöver ta bort / eliminera dubbletter.
Använd UNION ALL-operatören när du inte behöver ta bort / eliminera dubbletter.
Använda pgAdmin
Låt oss nu se hur alla tre åtgärderna utförs med pgAdmin.
Union
För att åstadkomma samma genom pgAdmin, gör detta:
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Från navigeringsfältet till vänster - Klicka på databaser.
- Klicka på Demo.
Steg 3) Skriv frågan i frågeditoren:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
Steg 4) Klicka på knappen Kör.
Den ska returnera följande:
Union All
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Klicka på Databaser i navigeringsfältet till vänster.
- Klicka på Demo.
Steg 3) Skriv frågan i frågeditoren:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Steg 4) Klicka på knappen Kör.
Den ska returnera följande:
SORTERA EFTER
UNION ALL-operatören kan kombineras med ORDER BY-klausulen för att beställa resultat i resultatuppsättningen. Till exempel:
SELECT idFROM BookUNION ALLSELECT idFROM priceORDER BY id;
Kommandot returnerar följande:
Resultaten har beställts.
Sammanfattning:
- PostgreSQL UNION-operatören kombinerar resultat från mer än en SELECT-sats i en resultatuppsättning.
- UNION-operatören returnerar inte dubbla poster.
- För att beställa resultaten, kombinera det med ORDER BY-klausulen.
- UNION ALL-operatören kombinerar resultat från mer än en SELECT-sats i en resultatuppsättning.
- UNION ALL-operatören tar inte bort dubbletter.
Ladda ner databasen som används i denna handledning