SQL Academy · Les

De basis van SELECT DISTINCT

Geef alleen unieke rijen terug.

Les 1 van 413 stappen

De basis van SELECT DISTINCT is een gratis SQL Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject SQL Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus SQL Academy bevat in totaal 4 lessen.

Waarom dubbele waarden voorkomen

Tabellen bevatten vaak herhaalde waarden. Een tabel customers kan dezelfde city in duizenden rijen bevatten. Wanneer je alleen geïnteresseerd bent in de verzameling verschillende waarden, geeft een gewone SELECT elke rij terug, inclusief herhalingen.

SELECT DISTINCT voegt identieke rijen samen tot één rij. In deze les leer je de basis van het teruggeven van alleen unieke resultaten.

SELECT city FROM customers;
-- Returns one row per customer, with many repeated cities

Het DISTINCT-trefwoord

DISTINCT komt direct na SELECT. Het verwijdert dubbele rijen uit de resultatenset en behoudt één exemplaar van elke unieke combinatie van de geselecteerde kolommen.

SELECT DISTINCT city
FROM customers;
-- One row per unique city

DISTINCT geldt voor de hele rij

Een veelvoorkomende misvatting is dat DISTINCT voor één kolom geldt. In werkelijkheid geldt het voor de volledige geselecteerde rij. Elke kolom die je opgeeft, telt mee bij het bepalen of twee rijen dubbel zijn.

Hieronder worden rijen alleen op basis van de waarde van city ontdubbeld, omdat dat de enige geselecteerde kolom is.

SELECT DISTINCT country
FROM customers;
-- Unique countries across all customers

Voorbeeldgegevens

Stel je een kleine tabel orders voor. Let op de herhaalde waarden voor status en country. Deze vorm gebruiken we in de hele les.

  • id=1, status='paid', country='US'
  • id=2, status='paid', country='US'
  • id=3, status='shipped', country='DE'
  • id=4, status='paid', country='DE'
CREATE TABLE orders (
  id         int PRIMARY KEY,
  status     text,
  country    text,
  amount     numeric(10,2)
);

DISTINCT met één kolom

Als je DISTINCT status uit de voorbeeldgegevens selecteert, krijg je de unieke statuswaarden paid en shipped. De vier rijen worden samengevoegd tot twee.

SELECT DISTINCT status
FROM orders;
-- paid
-- shipped

NULL wordt als één waarde behandeld

Hoewel NULL normaal gesproken nergens gelijk aan is, zelfs niet aan zichzelf, behandelt DISTINCT alle NULL-waarden als één groep. Als een kolom veel rijen met NULL bevat, krijg je precies één NULL in het unieke resultaat.

SELECT DISTINCT shipped_at
FROM orders;
-- All NULL shipped_at rows collapse into a single NULL row

DISTINCT met ORDER BY

Meestal wil je de unieke waarden gesorteerd zien. DISTINCT wordt eerst uitgevoerd om de unieke verzameling samen te stellen; daarna sorteert ORDER BY die verzameling. Elke kolom in ORDER BY moet bij het gebruik van DISTINCT ook in de SELECT-lijst staan.

SELECT DISTINCT country
FROM orders
ORDER BY country;
-- DE
-- US

DISTINCT tegenover GROUP BY

SELECT DISTINCT col en SELECT col GROUP BY col leveren dezelfde unieke rijen op. Gebruik DISTINCT wanneer je alleen unieke waarden wilt; kies GROUP BY wanneer je ook totalen zoals COUNT per groep nodig hebt.

-- These two return the same set of countries:
SELECT DISTINCT country FROM orders;

SELECT country FROM orders
GROUP BY country;

DISTINCT heeft een prijs

Dubbele waarden verwijderen is niet gratis. De database moet alle kandidaat-rijen sorteren of hashen om de unieke rijen te vinden. Bij grote tabellen kost dit extra processorcapaciteit en geheugen, dus gebruik DISTINCT alleen wanneer je daadwerkelijk unieke waarden nodig hebt.

-- Avoid blind DISTINCT on every query.
-- If the column is already unique (e.g. a PRIMARY KEY),
-- DISTINCT does nothing useful but still costs work:
SELECT DISTINCT id FROM orders;  -- id is already unique

DISTINCT in expressies

Je kunt DISTINCT toepassen op een berekende expressie, niet alleen op een onbewerkte kolom. De database berekent de expressie voor elke rij en verwijdert daarna dubbele resultaten.

SELECT DISTINCT upper(country) AS country_code
FROM orders
ORDER BY country_code;
-- DE
-- US

Een opzoeklijst maken

Een praktische toepassing van DISTINCT is het vullen van een vervolgkeuzelijst of filterlijst in een toepassing: haal de unieke statussen op zodat je de gebruiker elke mogelijke optie laat zien die momenteel in de gegevens voorkomt.

SELECT DISTINCT status
FROM orders
ORDER BY status;
-- paid
-- shipped

Korte toets

Waar hoort het trefwoord DISTINCT te staan en wat maakt het uniek?

Samenvatting

Je hebt de basis van SELECT DISTINCT geleerd:

  • Het verwijdert dubbele rijen uit de resultatenset.
  • Het geldt voor de volledig geselecteerde rij, niet voor één kolom.
  • Alle NULL-waarden worden samengevoegd tot één waarde.
  • ORDER BY wordt na het verwijderen van dubbele rijen uitgevoerd; de kolommen ervan moeten geselecteerd zijn.
  • Het kost extra werk, dus gebruik het alleen wanneer dat nodig is.

Volgende stap: DISTINCT uitbreiden naar meerdere kolommen.

SELECT DISTINCT status
FROM orders
ORDER BY status;
Gratis beginnen

Leer SQL met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
46
Lessen
183

Veelgestelde vragen

Is de les “De basis van SELECT DISTINCT” gratis?

Ja — de volledige tekst van “De basis van SELECT DISTINCT” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus SQL Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus SQL Academy bevat in totaal 4 lessen.

Wat leer ik in “De basis van SELECT DISTINCT”?

Geef alleen unieke rijen terug. Je oefent met SQL Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met SQL Academy te beginnen?

Ervaring vooraf is niet nodig. SQL Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “De basis van SELECT DISTINCT”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over SQL Academy?

Ja. Elke les over SQL Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. De basis van SELECT DISTINCT
  2. DISTINCT op meerdere kolommen
  3. PostgreSQL DISTINCT ON
  4. Unieke waarden tellen
← Terug naar SQL Academy