Wat is PostgreSQL Union?
De PostgreSQL UNION-operator wordt gebruikt voor het combineren van resultaatsets van meer dan één SELECT-instructie tot één resultaatset. Alle dubbele rijen uit de resultaten van de SELECT-instructies worden verwijderd. De UNION-operator werkt onder twee voorwaarden:
- De SELECT-query's MOETEN een vergelijkbaar aantal query's retourneren.
- De gegevenstypen van alle corresponderende kolommen moeten compatibel zijn.
De UNION-operator wordt normaal gesproken gebruikt om gegevens uit gerelateerde tabellen te combineren die niet perfect zijn genormaliseerd.
In deze PostgreSQL-tutorial leert u:
- Wat is PostgreSQL Union?
- Syntaxis
- Unie
- Union All
- BESTEL DOOR
- Wanneer Union gebruiken en wanneer Union all gebruiken?
- Met behulp van pgAdmin
Syntaxis
SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNIONSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];
Hier is een uitleg voor de bovenstaande parameters:
De expression_1, expression_2,… expression_n zijn de berekeningen of kolommen die u moet ophalen.
De tabellen zijn de tabellen waaruit u records moet ophalen.
De WHERE-voorwaarde (n) zijn de voorwaarden waaraan moet worden voldaan om records op te halen.
Opmerking: aangezien de UNION-operator geen duplicaten retourneert, heeft het gebruik van UNION DISTINCT geen invloed op de resultaten.
Unie
De UNION-operator verwijdert duplicaten. Laten we dit demonstreren.
We hebben een database genaamd Demo met de volgende tabellen:
Boek:
Prijs:
Laten we het volgende commando uitvoeren:
SELECT idFROM BookUNIONSELECT idFROM Price;
De opdracht retourneert het volgende:
De id-kolom verschijnt in zowel de boek- als de prijstabellen. Het komt echter maar één keer voor in het resultaat. De reden is dat de PostgreSQL UNION-operator geen duplicaten retourneert.
Union All
Deze operator combineert resultatensets van meer dan één SELECT-instructie zonder duplicaten te verwijderen. De operator vereist dat elke SELECT-instructie een vergelijkbaar aantal velden heeft in resultaatsets van vergelijkbare gegevenstypen.
Syntaxis:
SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNION ALLSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];
Hier is een uitleg voor de bovenstaande parameters:
De expression_1, expression_2,… expression_n zijn de berekeningen of kolommen die u moet ophalen.
De tabellen zijn de tabellen waaruit u records moet ophalen.
De WHERE-voorwaarde (n) zijn de voorwaarden waaraan moet worden voldaan om records op te halen.
Opmerking: beide uitdrukkingen moeten een gelijk aantal uitdrukkingen hebben.
We zullen de volgende tabellen gebruiken:
Boek:
Prijs:
Voer de volgende opdracht uit:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Het zou het volgende moeten retourneren:
De duplicaten zijn niet verwijderd.
BESTEL DOOR
De PostgreSQL UNION-operator kan samen met de ORDER BY-clausule worden gebruikt om de queryresultaten te ordenen. Om dit aan te tonen zullen we de volgende tabellen gebruiken:
Prijs:
Prijs2:
Hier is de opdracht die laat zien hoe u de UNION-operator samen met de ORDER BY-component gebruikt:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price;
De opdracht retourneert het volgende:
De records zijn gerangschikt volgens de prijskolom. De clausule rangschikt de records standaard in oplopende volgorde. Om ze in aflopende volgorde te ordenen, voegt u de DESC-clausule toe zoals hieronder weergegeven:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
De opdracht retourneert het volgende:
De records zijn gerangschikt op basis van de prijskolom in aflopende volgorde.
Wanneer Union gebruiken en wanneer Union all gebruiken?
Gebruik de UNION-operator als u meerdere tabellen hebt met een vergelijkbare structuur, maar om een bepaalde reden gesplitst. Het is goed wanneer u dubbele records moet verwijderen / verwijderen.
Gebruik de UNION ALL-operator als u geen dubbele records hoeft te verwijderen / elimineren.
Met behulp van pgAdmin
Laten we nu eens kijken hoe alle drie de acties presteerden met pgAdmin.
Unie
Om hetzelfde te bereiken met pgAdmin, doe je dit:
Stap 1) Log in op uw pgAdmin-account.
Stap 2)
- Klik in de navigatiebalk aan de linkerkant op Databases.
- Klik op Demo.
Stap 3) Typ de vraag in de zoekopdrachteditor:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
Stap 4) Klik op de knop Uitvoeren.
Het zou het volgende moeten retourneren:
Union All
Stap 1) Log in op uw pgAdmin-account.
Stap 2)
- Klik in de navigatiebalk aan de linkerkant op Databases.
- Klik op Demo.
Stap 3) Typ de vraag in de zoekopdrachteditor:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Stap 4) Klik op de knop Uitvoeren.
Het zou het volgende moeten retourneren:
BESTEL DOOR
De UNION ALL-operator kan worden gecombineerd met de ORDER BY-component om resultaten te ordenen in de resultatenset. Bijvoorbeeld:
SELECT idFROM BookUNION ALLSELECT idFROM priceORDER BY id;
De opdracht retourneert het volgende:
De resultaten zijn geordend.
Overzicht:
- De PostgreSQL UNION-operator combineert resultaten van meer dan één SELECT-instructie tot één resultaatset.
- De UNION-operator retourneert geen dubbele records.
- Om de resultaten te ordenen, combineert u deze met de ORDER BY-clausule.
- De UNION ALL-operator combineert resultaten van meer dan één SELECT-instructie in één resultatenset.
- De operator UNION ALL verwijdert geen duplicaten.
Download de database die in deze zelfstudie wordt gebruikt