PostgreSQL Unie, Unie ALLEN met voorbeelden

โšก Slimme samenvatting

PostgreSQL UNION combineert de resultaten van twee of meer SELECT-instructies tot รฉรฉn resultaatset en verwijdert dubbele rijen, terwijl UNION ALL alle rijen behoudt, wat een snellere optie is wanneer duplicaten geen probleem vormen.

  • ๐Ÿ”— Combineren: UNION voegt rijen uit meerdere SELECT-statements samen tot รฉรฉn resultaatset.
  • ๐Ÿงน Duplicaten: UNION verwijdert dubbele rijen, terwijl UNION ALL alle overeenkomende rijen behoudt.
  • ๐Ÿ“ Reglement: Elke SELECT-query moet hetzelfde aantal kolommen met compatibele gegevenstypen retourneren.
  • โ€‹ BESTEL DOOR: Een enkele ORDER BY-instructie aan het einde sorteert de gecombineerde resultaten.
  • โšก prestaties: UNION ALL werkt sneller omdat de stap voor het verwijderen van duplicaten wordt overgeslagen.
  • ๐Ÿค– AI-hulp: AI-assistenten lijnen kolommen uit en kiezen tussen UNION en UNION ALL.

PostgreSQL UNIE en UNIE ALLEN

Wat is PostgreSQL Unie?

De PostgreSQL De UNION-operator wordt gebruikt om resultaatsets van meer dan รฉรฉn SELECT-statement te combineren tot รฉรฉn resultaatset. Dubbele rijen uit de resultaten van de SELECT-statements worden geรซlimineerd. De UNION-operator werkt onder twee voorwaarden:

  • De SELECT-query's moeten hetzelfde aantal kolommen retourneren.
  • De gegevenstypen van alle bijbehorende kolommen moeten compatibel zijn.

De UNION-operator wordt normaal gesproken gebruikt om gegevens uit gerelateerde tabellen te combineren die niet perfect zijn genormaliseerd.

Syntaxis

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)];

Hier volgt 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 voordat records kunnen worden opgehaald.

Let op: Omdat de UNION-operator geen duplicaten retourneert, heeft het gebruik van UNION DISTINCT geen invloed op de resultaten.

PostgreSQL Unie

De UNION-operator verwijdert duplicaten, op dezelfde manier als KIES DISTINCT Dat klopt. Laten we dit demonstreren. We hebben een database genaamd Demo met de volgende tabellen:

Boek:

PostgreSQL Unie

Prijs:

PostgreSQL Unie

Laten we de volgende opdracht uitvoeren:

SELECT id
FROM Book
UNION
SELECT id
FROM Price;

De opdracht retourneert het volgende:

PostgreSQL Unie

De kolom ID verschijnt in zowel de Boek- als de Prijstabellen. Het komt echter slechts รฉรฉn keer voor in het resultaat. De reden is dat PostgreSQL De UNION-operator retourneert geen duplicaten.

PostgreSQL Unie allemaal

Deze operator combineert resultaatsets van meer dan รฉรฉn SELECT-statement zonder duplicaten te verwijderen. De operator vereist dat elke SELECT-statement een vergelijkbaar aantal velden heeft in resultaatsets van vergelijkbare gegevenstypen.

Syntax:

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)];

Hier volgt 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 voordat records kunnen worden opgehaald.

Let op: Beide SELECT-instructies moeten een gelijk aantal expressies bevatten.

We gebruiken de volgende tabellen:

Boek:

PostgreSQL Unie allemaal

Prijs:

PostgreSQL Unie allemaal

Voer het volgende commando uit:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Het volgende zou moeten worden geretourneerd:

PostgreSQL Unie allemaal

De duplicaten zijn niet verwijderd.

BESTELLING DOOR

De PostgreSQL De UNION-operator kan samen met de ORDER BY-component worden gebruikt om de queryresultaten te ordenen. Om dit te demonstreren, gebruiken we de volgende tabellen:

Prijs:

BESTELLING DOOR

Prijs2:

BESTELLING DOOR

Hier is de opdracht die laat zien hoe u de UNION-operator samen met de ORDER BY-clausule kunt gebruiken:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price;

De opdracht retourneert het volgende:

BESTELLING DOOR

De records zijn gerangschikt op basis van 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 Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

De opdracht retourneert het volgende:

BESTELLING DOOR

De records zijn geordend op basis van de prijskolom in aflopende volgorde.

Wanneer gebruik je Union en wanneer Union All?

Gebruik de UNION-operator wanneer u meerdere tabellen met een vergelijkbare structuur hebt die om een โ€‹โ€‹bepaalde reden zijn gesplitst. Deze operator is handig wanneer u dubbele records wilt verwijderen.

Gebruik de operator UNION ALL wanneer u geen dubbele records hoeft te verwijderen.

Gebruik pgAdmin

Laten we nu eens kijken hoe alle drie de acties worden uitgevoerd met pgAdmin.

Hoe te gebruiken PostgreSQL Unie met behulp van pgAdmin

Hieronder volgt een stapsgewijze handleiding voor het gebruik ervan. PostgreSQL UNION via pgAdmin:

Stap 1) Log in op uw pgAdmin-account.

Stap 2) Klik in de navigatiebalk aan de linkerkant op Databases en vervolgens op Demo.

Gebruik PostgreSQL Unie met behulp van pgAdmin

Stap 3) Typ de query in de query-editor:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

Stap 4) Klik op de knop Uitvoeren.

Gebruik PostgreSQL Unie met behulp van pgAdmin

Het volgende zou moeten worden geretourneerd:

Gebruik PostgreSQL Unie met behulp van pgAdmin

Unie allemaal

Stap 1) Log in op uw pgAdmin-account.

Stap 2) Klik in de navigatiebalk aan de linkerkant op Databases en vervolgens op Demo.

Gebruik PostgreSQL Union All met behulp van pgAdmin

Stap 3) Typ de query in de query-editor:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Stap 4) Klik op de knop Uitvoeren.

Gebruik PostgreSQL Union All met behulp van pgAdmin

Het volgende zou moeten worden geretourneerd:

Gebruik PostgreSQL Union All met behulp van pgAdmin

BESTELLING DOOR

De operator UNION ALL kan worden gecombineerd met de clausule ORDER BY om resultaten in de resultaatset te ordenen. Bijvoorbeeld:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price
ORDER BY id;

De opdracht retourneert het volgende:

Gebruik PostgreSQL BESTEL VIA pgAdmin

De resultaten zijn besteld.

Download de database die in deze zelfstudie wordt gebruikt

Veelgestelde vragen

UNION ALL is sneller omdat het simpelweg rijen samenvoegt. UNION moet de gecombineerde rijen sorteren of hashen om duplicaten te verwijderen, wat extra overhead met zich meebrengt. Wanneer duplicaten geen probleem vormen, is UNION ALL de efficiรซntere keuze.

Ja. Elke SELECT in een UNION moet hetzelfde aantal kolommen retourneren, en overeenkomende kolommen moeten compatibele gegevenstypen in dezelfde volgorde hebben. Anders PostgreSQL Dit leidt tot een foutmelding en de query mislukt.

Ja. De kolomnamen kunnen verschillen omdat UNION kolommen matcht op basis van hun positie, niet op naam. De gegevenstypen moeten echter wel compatibel zijn en de resultaatset gebruikt de kolomnamen uit de eerste SELECT-instructie.

Een UNION-bewerking stapelt de rijen van twee resultaatsets verticaal in รฉรฉn kolomlijst, waarbij duplicaten worden verwijderd. Een JOIN-bewerking combineert kolommen uit verschillende tabellen horizontaal op basis van een gerelateerde sleutel, waardoor rijen worden verbreed in plaats van samengevoegd.

ORDER BY sorteert het uiteindelijke gecombineerde resultaat, dus PostgreSQL Hiermee is slechts รฉรฉn ORDER BY-clausule toegestaan โ€‹โ€‹na de laatste SELECT-instructie. Het sorteren van de afzonderlijke query's zou immers zinloos zijn zodra de rijen ervan zijn samengevoegd.

AI-assistenten zoals GitHub Copilot lijnen de kolomlijsten van elke SELECT-query uit, signaleren niet-overeenkomende gegevenstypen en adviseren UNION of UNION ALL op basis van de vraag of duplicaten behouden moeten worden, waardoor veelvoorkomende queryfouten worden verminderd.

Ja. Door uw tabellen en doelstellingen te analyseren, kan een AI-assistent bepalen of dubbele rijen mogelijk en zinvol zijn. Vervolgens kan de assistent UNION ALL voorstellen wanneer duplicaten acceptabel zijn om snelheid te winnen, of UNION wanneer ze verwijderd moeten worden.

UNION retourneert rijen die in beide query's voorkomen. INTERSECT retourneert alleen rijen die in beide query's aanwezig zijn, en EXCEPT retourneert rijen die in de eerste query voorkomen, maar niet in de tweede. Alle drie verwijderen standaard duplicaten.

Vat dit bericht samen met: