PostgreSQL Union, Union ALL met voorbeelden

Inhoudsopgave:

Anonim

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)

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. 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)

  1. Klik in de navigatiebalk aan de linkerkant op Databases.
  2. 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