sql minus intersect
Terug naar overzicht

Snel databases vergelijken met de SQL-commando’s: INTERSECT en MINUS

Soms kan het handig zijn om twee verschillende databases met elkaar te vergelijken, bijvoorbeeld wanneer u werkzaam bent op een afdeling die over is gestapt op een nieuw systeem. Wanneer u het oude en nieuwe systeem wilt vergelijken, gaat u op zoek naar de overeenkomsten én de verschillen (die kunnen er namelijk op wijzen dat er iets mis is gegaan met de migratie tussen beide systemen). 2 nuttige commando’s die u hiervoor kunt gebruiken zijn: INTERSECT en MINUS.

Definities

INTERSECT vergelijkt de gegevens tussen tabellen en retourneert alleen de rijen met gegevens die in beide tabellen voorkomen.

MINUS vergelijkt de gegevens tussen tabellen en retourneert de rijen met gegevens die alleen bestaan in de eerste tabel die u opgeeft. Dit commando zoekt dus naar unieke waarden.

INTERSECT

Hieronder een voorbeeld hoe het commando INTERSECT werkt. Stel u heeft 2 databases:

  • Database_A (het oude systeem)
  • Database_B (het nieuwe systeem)

Het oude systeem (Database_A) bevat de volgende data:

Het nieuwe systeem (Database_B) heeft de volgende gegevens:

Laten we nu INTERSECT gebruiken in een query. We willen de landen vinden die het oude en nieuwe systeem gemeen hebben:

We specificeren de landkolom in elke SELECT-clausule. Het uitvoeren van deze query resulteert in de volgende uitkomst:

Als we terugkijken op de tabellen van A en B, kunnen we zien dat dit resultaat correct is. Alleen de landen Frankrijk en Ierland worden tussen de tabellen gedeeld.

MINUS

Hieronder een voorbeeld hoe het commando MINUS werkt, gegeven dezelfde datasets als hierboven. De query wordt dan:

Het resultaat wordt:

Als we terugkijken op de tabellen A en B kunnen we zien dat dit resultaat correct is. De landen Engeland en Duitsland zijn uniek en komen alleen in de eerste tabel (Database_A) voor.

De volgorde van de databases is hier erg belangrijk, en het is iets waar u op moet letten bij het gebruik van MINUS. In de query hierboven is eerst Database_A genoemd en daarna Database_B. Laten we de volgorde eens omdraaien en kijken wat er gebeurt.

De query wordt:

Als u deze query uitvoert, worden de volgende gegevens geretourneerd:

Het uitvoeren van deze query resulteert in de volgende dataset:

Zoals u kunt zien, wijkt dit resultaat enorm af ten opzichte van de eerste Minus query. SQL begint in de tweede minus query met de tabel B en verwijdert vervolgens alle landen die ook in de tabel A staan.

Conclusie

Soms kan het handig zijn om twee verschillende databases met elkaar te vergelijken. Belangrijke commando’s die u hiervoor kunt gebruiken zijn: INTERSECT en MINUS. Met INTERSECT gaat u op zoek naar overeenkomsten en met MINUS naar verschillen. Wilt u meer kennis en ervaring opdoen? Bekijk dan onderstaande SQL cursus!

SQL cursussen