SQL UNION versus UNION ALL: verschillen, voorbeelden en geteste prestaties

  1. Home
  2. Blog
  3. Databases en SQL

Databases en SQL

SQL UNION versus UNION ALL: Verschillen, voorbeelden en geteste prestaties

Het verschil tussen beide is één woord, maar als je verkeerd kiest, kun je stilletjes het verkeerde totaal krijgen. Bekijk beide op echte gegevens, leer de regels die ze delen en lees wat er gebeurde toen we ze op een miljoen rijen timeden.

8 min leestijd
SQL UNION versus UNION ALL: verschillen, voorbeelden en geteste prestaties

Belangrijkste punten

  • UNION combineert resultaten en verwijdert dubbele rijen. UNION ALL behoudt elke rij.
  • Het ontdubbelen van kosten werkt, dus UNION ALL is meestal sneller te berekenen.
  • Het gebruik van UNION vóór een SUM kan stilletjes echte waarden verwijderen en het verkeerde antwoord geven.
  • Standaard ingesteld op UNION ALL, tenzij u specifiek wilt dat duplicaten worden verwijderd.

Beide operators stapelen de resultaten van twee query’s op elkaar, dus SQL UNION versus UNION ALL lijkt misschien een kleine keuze. Dat is het niet. Eén extra woord verandert zowel uw resultaat als hoe hard de database moet werken.

We hebben elke query hier in SQLite 3.50 uitgevoerd, en de weergegeven resultaten en timings zijn afkomstig van die runs. Het basisgedrag is standaard-SQL voor grote databases. De timing zal echter verschillen voor uw eigen database, data en hardware, dus gebruik de onze als voorbeeld.

Het korte antwoord

UNION combineert twee resultaatsets en retourneert alleen afzonderlijke rijen. UNION ALL combineert ze en retourneert alles, inclusief duplicaten. Dat is het hele verschil, en de rest van dit artikel gaat over waarom het ertoe doet.

UNION versus UNION ALLEN naast elkaar

Aspect UNIE UNIE ALLEMAAL
Dubbele rijen Verwijderd Gehouden
Extra werk Moet duplicaten vinden Geen
Gebruikelijke snelheid Langzamer Sneller
Rijen kwamen terug Hetzelfde of minder Allemaal
Veilig vóór SUM of COUNT? Vaak niet Ja
Beste voor Unieke lijsten Gegevens, logs, totalen samenvoegen

De voorbeeldgegevens

Stel je een winkel voor die online en in-store bestellingen in aparte tabellen bijhoudt. Houd er rekening mee dat Asha twee identieke online bestellingen heeft en één identieke bestelling in de winkel.

CREATE TABLE online_orders (customer TEXT, total INT);
CREATE TABLE store_orders (customer TEXT, total INT);

INSERT INTO online_orders VALUES ('Asha',100), ('Ben',200), ('Asha',100);
INSERT INTO store_orders VALUES ('Asha',100), ('Dev',300);

Zie het verschil

SELECT customer, total FROM online_orders
UNION
SELECT customer, total FROM store_orders;

-- Asha | 100
-- Ben  | 200
-- Dev  | 300
SELECT customer, total FROM online_orders
UNION ALL
SELECT customer, total FROM store_orders;

-- Asha | 100
-- Ben  | 200
-- Asha | 100
-- Asha | 100
-- Dev  | 300

Vijf invoerrijen werden drie met UNION, en alle vijf bleven bij UNION ALL. Twee dingen om op te merken:

  • UNION verwijderde duplicaten uit het hele resultaat, inclusief die in de eerste tabel. Het gaat niet alleen om het vergelijken van tabellen.
  • Een rij telt alleen als duplicaat als elke geselecteerde kolom overeenkomt.

Als je echt een duidelijke lijst wilt, heeft UNION precies gelijk. Dit geeft elke klant die via een van beide kanalen heeft gekocht:

SELECT customer FROM online_orders
UNION
SELECT customer FROM store_orders;

-- Asha
-- Ben
-- Dev

De fout-totaal bug

Dit is de reden waarom de keuze er echt toe doet. Stel dat u de totale omzet wilt. De bovenstaande bestellingen zijn opgeteld 800. Bekijk wat elke operator geeft:

SELECT SUM(total) FROM (
  SELECT total FROM online_orders
  UNION
  SELECT total FROM store_orders
);
-- 600

SELECT SUM(total) FROM (
  SELECT total FROM online_orders
  UNION ALL
  SELECT total FROM store_orders
);
-- 800

De UNION-versie klopt met 200 niet. Omdat we alleen de kolom total hebben geselecteerd, leken drie afzonderlijke bestellingen van 100 roepie op duplicaten en vielen ze samen in één. Er is geen foutmelding en 600 lijkt een volkomen geloofwaardig getal. Dit soort stille bugs kunnen maanden in een financieel rapport blijven zitten.

Tip: Twee identiek uitziende rijen kunnen twee echte gebeurtenissen zijn. Voordat u UNION gebruikt, moet u zich afvragen of identieke rijen hetzelfde feit betekenen dat tweemaal is vastgelegd, of twee verschillende feiten. Voor verkopen, betalingen en loggegevens is dit meestal de tweede.

Regels die beide moeten volgen

Beide operators hebben dezelfde vereisten:

  1. Elke SELECT moet hetzelfde aantal kolommen retourneren.
  2. Kolommen worden gekoppeld op positie, niet op naam, dus houd ze in dezelfde volgorde.
  3. Gegevenstypen op elke positie moeten compatibel zijn.
  4. De namen van de resultaatkolommen komen uit de eerste SELECT.
  5. ORDER BY staat helemaal aan het einde en is van toepassing op het hele resultaat.

Het overtreden van de eerste regel levert een fout op. Hier is het bericht van SQLite:

SELECT customer, total FROM online_orders
UNION
SELECT customer FROM store_orders;

-- SELECTs to the left and right of UNION do not have
-- the same number of result columns

De tweede regel is gevaarlijker, omdat deze zonder fouten kan mislukken. Als u twee kolommen van hetzelfde type verwisselt, zoals first_name en last_name, wordt de query uitgevoerd en komen de gegevens verkeerd uit. SQLite is ook ontspannen over typen, terwijl databases zoals PostgreSQL strenger zijn en mogelijk een expliciete CAST vereisen.

Label de bron

Een heel praktische truc is om een constante kolom toe te voegen die laat zien waar elke rij vandaan komt. Omdat het label verschilt, kunnen rijen uit verschillende tabellen niet langer als duplicaten van elkaar worden behandeld.

SELECT customer, total, 'online' AS channel FROM online_orders
UNION ALL
SELECT customer, total, 'store' FROM store_orders
ORDER BY customer, channel;

-- Asha | 100 | online
-- Asha | 100 | online
-- Asha | 100 | store
-- Ben  | 200 | online
-- Dev  | 300 | store

Zodra uw gegevens een label hebben, kunt u deze groeperen om verkopen per kanaal te rapporteren met behulp van GROUP BY. Als je meerdere stappen moet combineren, wikkel de unie dan in een CTE om deze leesbaar te houden.

Prestaties: wat er in onze test is gebeurd

Om duplicaten te verwijderen, moet de database rijen vergelijken, meestal door ze te sorteren of te hashen. UNION ALL kan deze stap overslaan. We hebben twee tabellen gemaakt met elk 500.000 rijen, met willekeurige getallen van 0 tot 50.000, dus er waren veel duplicaten. We hebben elke zoekopdracht meerdere keren uitgevoerd en de beste tijd behouden.

Eerst telden we de resultaten, zodat de tijd die besteed werd aan het terugsturen van rijen naar ons programma geen invloed had op de vergelijking:

Zoekopdracht, verpakt in COUNT(*) Rijen Beste tijd
UNIE 50,001 261 ms
UNIE ALLEMAAL 1,000,000 Minder dan 1 ms

Het enorme verschil komt deels doordat SQLite dat aantal kan berekenen zonder elke rij te lezen, dus lees dat alsjeblieft niet als “duizenden keren sneller”. Het laat echter wel het kernidee zien: UNION moest echt werk doen en UNION ALL niet.

Vervolgens hebben we alle rijen in Python opgehaald en het resultaat is omgedraaid:

Query, waarbij alle rijen worden opgehaald Rijen kwamen terug Beste tijd
UNIE 50,001 277 ms
UNIE ALLEMAAL 1,000,000 392 ms

Hier duurde UNION ALL langer omdat het twintig keer zoveel rijen opleverde. Het is niet deduplicatie die dit heeft vertraagd. Het verwerken van een miljoen rijen was dat wel. De eerlijke regel is dus dat UNION ALL goedkoper is voor de database om te berekenen, maar de grootte van het resultaat is ook van belang. Veel online grafieken reduceren dit tot “UNION ALL is altijd sneller”, en onze test laat zien waarom dit niet zo eenvoudig is.

Kies ook niet alleen op basis van snelheid. Kies eerst de operator die het juiste antwoord geeft en stem vervolgens af. Als een zoekopdracht traag is, lees dan onze handleiding over SQL-queryoptimalisatie.

Wanneer moet u ze allemaal gebruiken?

Gebruik UNION ALL wanneer:

  • U voegt gegevens uit vergelijkbare tabellen samen, zoals maandpartities.
  • Achteraf berekent u totalen of tellingen.
  • Je weet dat de inputs elkaar niet kunnen overlappen.
  • Duplicaten zijn betekenisvol, zoals in logboeken of auditrecords.

Gebruik UNION wanneer:

  • U hebt een unieke lijst nodig, zoals elk e-mailadres op twee systemen.
  • Overlappende bronnen bevatten meer dan eens hetzelfde feit.

Behandel UNION ALL als standaard en gebruik UNION bewust. Het toevoegen van een WHERE-clausule aan elke vertakking, om vroegtijdig te filteren, helpt beide.

SNIJDEN en BEHALVE

Twee gerelateerde set-operatoren beantwoorden verschillende vragen. Beide volgen dezelfde kolomregels:

SELECT customer FROM online_orders
INTERSECT
SELECT customer FROM store_orders;
-- Asha  (bought in both channels)

SELECT customer FROM online_orders
EXCEPT
SELECT customer FROM store_orders;
-- Ben   (online only)

Oracle heeft traditioneel MINUS gebruikt in plaats van EXCEPT, en de ondersteuning voor deze operators varieert enigszins per database en versie.

UNION versus JOIN

Deze zijn vaak verward, maar ze combineren gegevens in verschillende richtingen:

Operatie Richting Resultaat
UNIE Verticaal Voegt meer rijen toe
DOE MEE Horizontaal Voegt meer kolommen toe

Veel voorkomende fouten

  • Uit gewoonte gebruik je UNION. Het kan je snelheid kosten of geldige rijen verwijderen.
  • Als u te weinig kolommen selecteert. Als u een ID weglaat, zien afzonderlijke rijen er identiek uit.
  • Niet-overeenkomende kolomvolgorde. Waarden kunnen zonder fouten in de verkeerde kolom terechtkomen.
  • ORDER BY toevoegen aan elke tak. Sorteer één keer aan het einde.
  • Gebruik UNION om een ​​slechte join te herstellen. Als er duplicaten verschijnen vanwege een join, repareer dan de join.
  • Uitgaande van de resultaatvolgorde. Zonder ORDER BY kan de rijvolgorde voor geen van beide operators worden gegarandeerd.

Tot slot

Stel elke keer één vraag: zijn identieke rijen hetzelfde feit of afzonderlijke feiten? Als ze gescheiden zijn, of als overlap onmogelijk is, gebruik dan UNION ALL. Als je een unieke lijst nodig hebt, gebruik dan UNION. Om uw eigen rapporten te controleren, zoekt u in uw code naar UNION in de buurt van een SUM of COUNT en bevestigt u dat deze totalen echt kloppen.

Veelgestelde vragen

Wat is het verschil tussen UNION en UNION ALL?

UNION combineert twee resultaatsets en verwijdert dubbele rijen. UNION ALL combineert ze en bewaart elke rij, inclusief duplicaten.

Wat is sneller, UNION of UNION ALL?

UNION ALL is meestal goedkoper om te berekenen, omdat er niet op duplicaten wordt gecontroleerd. Het retourneren van een veel groter resultaat kan over het algemeen nog steeds langer duren, zoals uit onze test bleek.

Verwijdert UNION duplicaten binnen één tabel?

Ja. Het verwijdert duplicaten uit het gehele gecombineerde resultaat, inclusief identieke rijen die allemaal uit dezelfde tabel kwamen.

Moeten kolomnamen overeenkomen in een UNION?

Nee. Kolommen worden op positie gematcht en het resultaat gebruikt namen uit de eerste SELECT. Het aantal kolommen moet overeenkomen en de typen moeten compatibel zijn.

Kan ik ORDER BY gebruiken met UNION?

Ja, maar plaats een ORDER BY helemaal aan het einde van de verklaring. Het sorteert het volledige gecombineerde resultaat in plaats van een enkele vertakking.

Blijf leren

Werk met Stack Quora

Hulp nodig met testen, WordPress of SEO?

We helpen teams betere software te leveren en hun sites te laten groeien. Vertel ons waar u mee bezig bent en wij stellen een duidelijke volgende stap voor.

Blijf lezen

Meer handleidingen over testen, AI en moderne ontwikkeling

Genoten van dit artikel? Kies een onderwerp en ga direct naar onze nieuwste tutorials.

Kunstmatige intelligentie

AI-hallucinaties uitgelegd: waarom taalmodellen dingen verzinnen en hoe ze te verminderen

AI-hallucinaties uitgelegd: wat ze zijn, waarom taalmodellen ze produceren, veelvoorkomende typen, hoe je ze kunt verminderen met aarding en aanwijz…

Lees artikel →
DevOps

Omgevingsvariabelen uitgelegd: .env-bestanden, geheimen en configuratie goed gedaan

Omgevingsvariabelen uitgelegd met Python-voorbeelden die we hebben uitgevoerd: ze lezen en instellen, waarom elke waarde een string is, .env-bestand…

Lees artikel →
Softwareontwikkeling

API-snelheidsbeperking uitgelegd: algoritmen, headers en afhandeling van 429-fouten

API-snelheidsbeperking uitgelegd met een simulatie die we hebben uitgevoerd: token-bucket, vast venster, schuifvenster, 429 reacties, headers van sn…

Lees artikel →
Testautomatisering

Spotten in Python: unittest.mock, patch en de fouten die tests doen liegen

Spotten in Python met unittest.mock, getest: Mock en return_value, side_effect, patchen waar een naam wordt gebruikt, spec en autospec, spotdatums e…

Lees artikel →
Softwaretesten

Codedekking uitgelegd: lijn versus filiaaldekking en wat 100% werkelijk betekent

Codedekking uitgelegd met een echte dekking.py-run: dekking van lijnen, vertakkingen en condities, een rapport lezen, waarom 100% dekking nog steeds…

Lees artikel →
Databases & SQL

DELETE versus TRUNCATE versus DROP in SQL: verschillen, terugdraaien en wanneer elk te gebruiken

DELETE versus TRUNCATE versus DROP uitgelegd met geteste SQL: wat elk verwijdert, terugdraaien, triggers, identiteitsreset, snelheid en hoe PostgreS…

Lees artikel →
Databases & SQL

SQL-weergaven uitgelegd: creëer, gebruik en vermijd de valkuilen, met voorbeelden

SQL-weergaven uitgelegd met query's die we hebben uitgevoerd: een weergave maken, live resultaten, kolommen verbergen, prestaties, bijwerkbare en ge…

Lees artikel →
Softwareontwikkeling

TypeScript-interface versus type: echte verschillen, getest met de compiler

TypeScript-interface versus type, gecontroleerd met de echte compiler: wat beide kunnen doen, wat slechts één kan doen, samenvoegen van declaraties,…

Lees artikel →
Softwareontwikkeling

Python *args en **kwargs uitgelegd: flexibele functies met duidelijke voorbeelden

Python *args en **kwargs uitgelegd met code die we hebben uitgevoerd: in- en uitpakken, parametervolgorde, argumenten die alleen trefwoorden en posi…

Lees artikel →
Softwareontwikkeling

Python Lambda-functies: syntaxis, echt gebruik en wanneer u ze niet moet gebruiken

Python lambda-functies uitgelegd met code die we hebben uitgevoerd: syntaxis, sorteren met sleutel, kaart en filter, sluitingen, de laat-bindende va…

Lees artikel →
Kunstmatige intelligentie

Wat zijn AI-agenten? Hoe ze werken, met een eenvoudige agentloop die u kunt uitvoeren

Wat zijn AI-agenten? Een duidelijke gids voor de agentenlus, tools, geheugen en vangrails, met een kleine Python-lus die we hebben uitgevoerd, echte…

Lees artikel →
DevOps

Monitoring versus waarneembaarheid: het echte verschil, met logboeken, statistieken en sporen

Monitoring versus waarneembaarheid uitgelegd: bekende en onbekende fouten, logboeken, statistieken en sporen, een walkthrough voor afrekenincidenten…

Lees artikel →
DevOps

Docker-volumes versus bindingsmounts: bewaar containergegevens op de juiste manier

Docker-volumes versus bind-mounts uitgelegd: waarom containergegevens verdwijnen, benoemde volumes, bind-mounts, tmpfs, Compose-voorbeelden, back-up…

Lees artikel →
Testautomatisering

TDD versus BDD: belangrijkste verschillen, één functie die op beide manieren is gebouwd en wanneer deze moet worden gebruikt

TDD versus BDD uitgelegd met één kortingsfunctie die in beide richtingen is gebouwd: rood-groen-refactor met code die we hebben uitgevoerd, gegeven-…

Lees artikel →
Softwaretesten

Gebruikersacceptatietesten (UAT): proces, checklist en echte voorbeelden

Gebruikersacceptatietesten uitgelegd: wie voert het uit, hoe het verschilt van QA, een proces in zeven stappen, een UAT-testcase-sjabloon, een check…

Lees artikel →
Databases & SQL

SQL NULL-waarden uitgelegd: IS NULL, COALESCE, NULLIF en de te vermijden vallen

SQL NULL-waarden uitgelegd met query's die we hebben uitgevoerd: logica met drie waarden, IS NULL, COALESCE, NULLIF, hoe aggregaten, joins en sorter…

Lees artikel →
Databases & SQL

SQL CASE WHEN-instructie: syntaxis, echte voorbeelden en veelvoorkomende fouten

SQL CASE WHEN uitgelegd met vragen die we hebben uitgevoerd: eenvoudige en doorzochte formulieren, volgorde van de voorwaarden, draaipunten met SUM,…

Lees artikel →
Softwareontwikkeling

Wat is JWT? JSON-webtokens uitgelegd met een werkend voorbeeld

Wat is JWT? JSON Web Tokens uitgelegd: de drie delen, een token gebouwd en waarmee is geknoeid in de code die we hebben uitgevoerd, JWT versus sessi…

Lees artikel →
Softwareontwikkeling

JavaScript-gebeurtenislus uitgelegd: call-stack, microtaken en timers met voorbeelden

De JavaScript-gebeurtenislus uitgelegd met code die we hebben uitgevoerd: call-stack, taak- en microtask-wachtrijen, waarom setTimeout 0 niet onmidd…

Lees artikel →
Softwareontwikkeling

Python-generatoren en opbrengst uitgelegd: bespaar geheugen met echte voorbeelden

Python-generatoren en opbrengst uitgelegd met code die we hebben uitgevoerd: hoe ze pauzeren en hervatten, gemeten geheugenbesparingen, pijplijnen, …

Lees artikel →
Kunstmatige intelligentie

Wat zijn inbeddingen? Vectoren en cosinusovereenkomst eenvoudig uitgelegd

Wat zijn insluitingen? Een gids in duidelijke taal over vectoren, cosinusovereenkomst en semantisch zoeken, met een klein voorbeeld dat we hebben ui…

Lees artikel →
DevOps

Implementatie van blauwgroen versus kanarie: verschillen, afwegingen en hoe te kiezen

Blauw-groen versus kanarie-implementatie uitgelegd: hoe elk werkt, kosten, risico's en terugdraaien, stabiele gebruikersbucket die we hebben getest,…

Lees artikel →
Testautomatisering

Schilferige tests: wat de oorzaak ervan is en hoe u ze voorgoed kunt oplossen

Zwakke tests uitgelegd met demo's die we hebben uitgevoerd: de belangrijkste oorzaken, hoe je er een kunt bevestigen en diagnosticeren, goede oploss…

Lees artikel →
Softwaretesten

Belastingtesten versus stresstesten: verschillen, statistieken en k6-voorbeelden

Belastingtesten versus stresstesten uitgelegd: wat elk bewijst, piek- en soak-tests, de statistieken die er toe doen, waarom gemiddelden misleiden, …

Lees artikel →
Softwaretesten

Testcase versus testscenario: belangrijkste verschillen, voorbeelden en wanneer deze te gebruiken

Testcase versus testscenario uitgelegd: duidelijke definities, een tabel naast elkaar, één functie voor het opnieuw instellen van wachtwoorden, over…

Lees artikel →
Databases & SQL

Optimalisatie van SQL-query's: lees uitvoeringsplannen en repareer langzame query's, met timing

Optimalisatie van SQL-query's getest op een miljoen rijen: lees uitvoeringsplannen, voeg de juiste indexen toe, repareer niet-sargeerbare filters, g…

Lees artikel →
Databases & SQL

SQL UNION versus UNION ALL: verschillen, voorbeelden en geteste prestaties

SQL UNION versus UNION ALL uitgelegd met de query's die we hebben uitgevoerd: duplicaten, de regels volgen beide, een echte databug, gemeten prestat…

Lees artikel →
Softwareontwikkeling

JavaScript Fetch API-tutorial: GET, POST, foutafhandeling en time-outs

Een JavaScript Fetch API-tutorial getest tegen een lokale server: GET en POST, waarom 404 niet gooit, een herbruikbare helper, queryreeksen, time-ou…

Lees artikel →
Softwareontwikkeling

Python-bestandsverwerking: lezen, schrijven, CSV, JSON en pathlib met voorbeelden

Het verwerken van Python-bestanden uitgelegd met code die we hebben uitgevoerd: open modi, met het lezen van grote bestanden, CSV, JSON, pathlib, bi…

Lees artikel →
Softwareontwikkeling

Python-klassen en -objecten: OOP-zelfstudie met echte voorbeelden

Python-klassen en -objecten uitgelegd met code die we hebben uitgevoerd: __init__, methoden, klasse versus instantie-attributen, overerving, eigensc…

Lees artikel →
Kunstmatige intelligentie

Wat is een groot taalmodel? Hoe LLM's werken, uitgelegd zonder de hype

Wat is een groot taalmodel? LLM's uitgelegd in duidelijke taal: tokens, inbedding, aandacht, training, temperatuur- en contextvensters, een kleine d…

Lees artikel →
DevOps

Linux-opdrachten voor beginners: de essentiële terminalgids met voorbeelden

Linux-opdrachten voor beginners, gegroepeerd op taak: navigatie, bestanden, logboeken bekijken, grep, pipelines, machtigingen, processen en archieve…

Lees artikel →
Testautomatisering

Selenium versus toneelschrijver: belangrijkste verschillen, code vergeleken en welke te kiezen

Selenium versus Playwright vergeleken: architectuur, wachten, browser- en taalondersteuning, debuggen, dezelfde test in beide tools, migratieadvies …

Lees artikel →
Softwaretesten

Equivalentiepartitionering: testontwerptechniek uitgelegd met uitgewerkte voorbeelden

Equivalentiepartitionering uitgelegd: hoe je geldige en ongeldige partities kunt vinden, uitgewerkte voorbeelden voor leeftijden, wachtwoorden en ko…

Lees artikel →
Softwaretesten

Ernst versus prioriteit bij het testen van software: verschillen, matrix en echte voorbeelden

Ernst versus prioriteit bij het testen van software uitgelegd: duidelijke definities, een vierwegmatrix met voorbeelden, niveauschalen, wie deze bep…

Lees artikel →
Databases & SQL

Tutorial voor SQL-subquery's: typen, gecorreleerde subquery's en BESTAAN met voorbeelden

Een SQL-subquery-tutorial met query's die we hebben uitgevoerd: scalaire, IN-, FROM- en SELECT-subquery's, gecorreleerde subquery's, EXISTS, de NOT …

Lees artikel →
Databases & SQL

SQL-transacties en ACID uitgelegd: COMMIT-, ROLLBACK- en isolatieniveaus

SQL-transacties en ACID uitgelegd met een bankoverschrijving die we hebben uitgevoerd: COMMIT, ROLLBACK, savepoints, locks, isolatieniveaus, dirty r…

Lees artikel →
Softwareontwikkeling

Git merge vs rebase: verschillen, voorbeelden en wanneer je wat gebruikt

Git merge vs rebase uitgelegd met echte logoutput, een vergelijkingstabel, de gouden regel van rebase en een veilige teamwerkwijze.

Lees artikel →
Softwareontwikkeling

Python list comprehension: syntaxis, voorbeelden en wanneer je het vermijdt

Python list comprehension uitgelegd: syntaxis, filteren, if-else, geneste lussen, gemeten tijden en wanneer een gewone for-lus beter is.

Lees artikel →
Databases & SQL

SQL JOIN uitgelegd met voorbeelden (Inner, Left, Right, Full)

Begrijp SQL joins stap voor stap met voorbeeldtabellen en queries: INNER, LEFT, RIGHT, FULL, CROSS en SELF, plus veelgemaakte fouten en prestatietips.

Lees artikel →