SQL Academy · Les

Sorteren op meerdere kolommen

Los gelijke waarden op met secundaire sorteersleutels.

Les 2 van 413 stappen

Sorteren op meerdere kolommen is een gratis SQL Academy-les op CoddyKit. Dit is les 2 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.

Het probleem met gelijke waarden

Wanneer u op één kolom sorteert, hebben rijen met dezelfde waarde onderling geen vastgelegde volgorde. Drie producten met een prijs van 20 kunnen in elke volgorde worden teruggegeven.

Voeg een tweede sorteersleutel toe om de volgorde volledig voorspelbaar te maken.

-- Ties on price are ordered arbitrarily
SELECT name, price
FROM products
ORDER BY price;

Meerdere sorteersleutels opgeven

ORDER BY accepteert een door komma's gescheiden lijst met kolommen. De database sorteert eerst op de eerste kolom, lost gelijke waarden daarna op met de tweede kolom, enzovoort.

Hier worden producten op prijs gesorteerd; gelijke prijzen worden alfabetisch op naam gesorteerd.

SELECT name, price
FROM products
ORDER BY price, name;

De volgorde van de sleutels is belangrijk

De volgorde van kolommen verandert het resultaat. ORDER BY price, name is niet hetzelfde als ORDER BY name, price.

De eerste sleutel bepaalt de hoofdvolgorde; latere sleutels zijn alleen van belang wanneer eerdere sleutels gelijk zijn.

-- Primary sort by category, then by name within each category
SELECT category, name
FROM products
ORDER BY category, name;

Richting per kolom

Elke sorteersleutel kan een eigen richting hebben. Combineer ASC en DESC naar wens.

Hiermee worden categorieën alfabetisch gegroepeerd, maar worden binnen elke categorie de duurste artikelen eerst weergegeven.

SELECT category, name, price
FROM products
ORDER BY category ASC, price DESC;

DESC geldt per kolom

Een veelgemaakte fout is denken dat DESC aan het einde alles omkeert. Het heeft alleen effect op de kolom die er direct voor staat.

In ORDER BY category, price DESC wordt category nog steeds oplopend gesorteerd; alleen price wordt aflopend gesorteerd.

-- category: ASC, price: DESC
SELECT category, price
FROM products
ORDER BY category, price DESC;

Drie of meer sleutels

U kunt zoveel sorteersleutels koppelen als u nodig hebt. Elke sleutel wordt pas gebruikt wanneer alle voorgaande sleutels gelijk zijn.

Sorteer bestellingen op datum, vervolgens op klant en daarna op totaal binnen dezelfde klant en datum.

SELECT created_at, customer_id, total
FROM orders
ORDER BY created_at DESC, customer_id, total DESC;

Een stabiele, deterministische sortering

Sluit uw sorteersleutels af met een unieke kolom, zoals de primaire sleutel, voor een volledig deterministisch resultaat. Dan kunnen twee rijen nooit gelijk eindigen.

Dit is belangrijk voor paginering, zoals u in de volgende les zult zien.

SELECT id, name, price
FROM products
ORDER BY price DESC, id;

Expressies en kolommen combineren

Sorteersleutels kunnen een combinatie zijn van gewone kolommen en expressies. Elke sleutel staat los van de andere.

Hiermee wordt eerst aflopend op voorraadwaarde gesorteerd en daarna alfabetisch op naam als oplossing voor gelijke waarden.

SELECT name, price, stock
FROM products
ORDER BY price * stock DESC, name ASC;

Sorteren op een boolean om een groep naar voren te halen

Een handige truc is sorteren op een booleaanse expressie om een groep bovenaan of onderaan te zetten. In PostgreSQL wordt false vóór true gesorteerd.

Hier worden artikelen die op voorraad zijn (stock > 0) eerst weergegeven en vervolgens binnen elke groep op prijs gesorteerd, van goedkoop naar duur.

SELECT name, stock, price
FROM products
ORDER BY (stock = 0), price;

De plaats van NULL bepalen

In PostgreSQL wordt NULL standaard achteraan gesorteerd bij oplopend sorteren en vooraan bij aflopend sorteren. U kunt dit voor elke sleutel overschrijven met NULLS FIRST of NULLS LAST.

SELECT name, discount
FROM products
ORDER BY discount DESC NULLS LAST;

Alles samenvoegen

Een realistische sortering met meerdere sleutels kan richting, expressies en verwerking van NULL-waarden combineren. Lees deze van links naar rechts: elke sleutel verfijnt de voorgaande.

SELECT category, name, price, rating
FROM products
ORDER BY category ASC,
         rating DESC NULLS LAST,
         price ASC;

Korte controle

Bekijk ORDER BY category, price DESC.

Samenvatting

Sorteren op meerdere kolommen in het kort:

  • Geef sorteersleutels op, gescheiden door komma's; eerdere sleutels hebben voorrang
  • Elke sleutel heeft een eigen ASC/DESC
  • Sluit af met een unieke kolom voor een deterministische volgorde
  • Beheer ontbrekende waarden met NULLS FIRST/NULLS LAST

In de volgende les beperkt u het aantal teruggegeven rijen met LIMIT en OFFSET.

SELECT category, name, price
FROM products
ORDER BY category ASC, price DESC, id;
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 “Sorteren op meerdere kolommen” gratis?

Ja — de volledige tekst van “Sorteren op meerdere kolommen” 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 “Sorteren op meerdere kolommen”?

Los gelijke waarden op met secundaire sorteersleutels. 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 2 van 4.

Hoe lang duurt de les “Sorteren op meerdere kolommen”?

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. Sorteren met ORDER BY
  2. Sorteren op meerdere kolommen
  3. LIMIT en OFFSET
  4. De bovenste N records vinden
← Terug naar SQL Academy