verschil tussen union en union all
Terug naar overzicht

Het verschil tussen union en union all

U kunt UNION- en UNION ALL-opdrachten gebruiken in een query om gegevens uit meerdere tabellen in uw database aan elkaar te koppelen. Het is een veelvoorkomend commando, aangezien de meeste databases veel tabellen hebben. Bij het vergelijken van UNION versus UNION ALL is er één groot verschil:

  • UNION retourneert alleen unieke regels.
  • UNION ALL retourneert alle records, inclusief duplicaten.

Aan de hand van een aantal voorbeelden laten we de verschillen zien.

Voorwaarden

Er zijn verschillende spelregels voor UNION en UNION ALL. Het niet naleven van deze regels zal resulteren in foutmeldingen:

  • Het aantal kolommen dat in uw eerste query en uw tweede query wordt gebruikt, moet hetzelfde zijn en de gegevenstypen (bijv. INT, VARCHAR, enz.) moeten overeenkomen.
  • De kolomnamen in beide zoekopdrachten kunnen verschillen; wanneer dit het geval is, toont de resulterende dataset de kolomnamen van de eerste query.
  • Wanneer u SQL-aliassen gebruikt in combinatie met UNION en UNION ALL, hoeft u de alias alleen op te nemen in de eerste query. Het opnemen ervan bij de tweede query veroorzaakt geen fout, maar heeft ook geen invloed op het resultaat.

UNION

Om het verschil te laten zien tussen beide opdrachten, gaan we aan de slag met de volgende datasets:

Dataset: Sporters

Met de UNION opdracht worden beide datasets verbonden:

Het resultaat van deze query zijn de unieke records uit beide dataset:

Dus van de 6 records die er in totaal zijn (3 sporters en 3 voetballers) worden er door de UNION opdracht 4 getoond: de unieke records.

UNION ALL

Ook met de UNION ALL opdracht worden beide datasets verbonden:

Het resultaat van deze query is:

Dus alle 6 records worden getoond door de UNION ALL opdracht

Conclusie verschil tussen union en union all

Nu u weet hoe u zowel UNION als UNION ALL moet gebruiken, vraagt u zich waarschijnlijk af welke het beste is voor uw situatie. Een ding om te overwegen is het feit dat UNION dubbele records verwijdert, wat van invloed kan zijn op de prestaties van uw zoekopdracht. Als je je afvraagt welke variant je moet gebruiken, onthoud dan: Als u weet dat alle geretourneerde records uniek zullen zijn, gebruik dan UNION ALL; het zal sneller zijn. Dit is vooral relevant voor grotere datasets. Wilt u meer kennis opdoen over SQL? Volg dan onze SQL cursus.

 

Geschreven door

Thomas Duin

Eigenaar

Gespecialiseerd in diverse applicaties & software

SQL cursussen