LIMIT en OFFSET
Haal de eerste N rijen op en gebruik paginering.
LIMIT en OFFSET is een gratis SQL Academy-les op CoddyKit. Dit is les 3 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.
Slechts enkele rijen ophalen
Soms wilt u niet elke overeenkomende rij, maar alleen de eerste paar. LIMIT begrenst hoeveel rijen de query retourneert.
Dit retourneert maximaal 5 producten.
SELECT name, price
FROM products
LIMIT 5;LIMIT zonder ORDER BY is willekeurig
Met alleen LIMIT krijgt u enkele rijen, maar het is niet bepaald welke rijen dat zijn. Combineer het altijd met ORDER BY, zodat het resultaat betekenisvol en herhaalbaar is.
-- The 5 newest orders, deterministically
SELECT id, total, created_at
FROM orders
ORDER BY created_at DESC
LIMIT 5;Rijen overslaan met OFFSET
OFFSET vertelt de database dat deze een aantal rijen moet overslaan voordat ze worden teruggegeven. In combinatie met LIMIT vormt dit de basis van paginering.
Hiermee worden de eerste 10 rijen overgeslagen en de volgende 5 teruggegeven.
SELECT name, price
FROM products
ORDER BY name
LIMIT 5 OFFSET 10;Pagina's opbouwen
Bij een paginagrootte van 10 worden paginanummers als volgt aan offsets gekoppeld:
- Pagina 1:
OFFSET 0 - Pagina 2:
OFFSET 10 - Pagina 3:
OFFSET 20
De formule is OFFSET = (page - 1) * page_size.
-- Page 3 with 10 rows per page
SELECT name, price
FROM products
ORDER BY name
LIMIT 10 OFFSET 20;Volgorde van bewerkingen
De database past de componenten in deze volgorde toe: filter met WHERE, sorteer met ORDER BY en beperk daarna met OFFSET en LIMIT.
U pagineert dus altijd door het gesorteerde, gefilterde resultaat.
SELECT name, price
FROM products
WHERE price > 0
ORDER BY price DESC
LIMIT 10 OFFSET 0;LIMIT ALL en OFFSET 0
LIMIT ALL betekent "geen limiet" (hetzelfde als LIMIT weglaten), en OFFSET 0 slaat niets over. Ze zijn soms nuttig wanneer een waarde dynamisch wordt opgebouwd.
SELECT name
FROM products
ORDER BY name
LIMIT ALL OFFSET 0;De standaardsyntaxis van FETCH
PostgreSQL ondersteunt ook de vorm uit de SQL-standaard: OFFSET n ROWS FETCH NEXT m ROWS ONLY. Dit doet precies hetzelfde als LIMIT/OFFSET, maar dan omslachtiger.
SELECT name, price
FROM products
ORDER BY name
OFFSET 10 ROWS
FETCH NEXT 5 ROWS ONLY;Waarom grote OFFSET-waarden traag zijn
Een grote OFFSET zorgt er nog steeds voor dat de database elke overgeslagen rij scant en weggooit. OFFSET 100000 leest 100.000 rijen om ze vervolgens weg te gooien, waardoor diepe pagina's traag worden.
-- Reads 100000 rows then discards them
SELECT id, name
FROM products
ORDER BY id
LIMIT 10 OFFSET 100000;Paginering op basis van sleutels
Een sneller alternatief is keyset-paginering (seek-paginering). In plaats van een offset onthoud je de laatste rij die je hebt gezien en vraag je om rijen erna.
Hiermee spring je met behulp van een index rechtstreeks naar de volgende pagina, zonder rijen over te slaan.
-- Next page after the last seen id (e.g. 5000)
SELECT id, name
FROM products
WHERE id > 5000
ORDER BY id
LIMIT 10;Stabiele pagina's vereisen een stabiele sortering
Als je ORDER BY gelijke waarden bevat, kunnen rijen tussen het laden van pagina's door verschuiven en kun je duplicaten of hiaten zien. Sluit de sortering af met een unieke sleutel, zoals de primaire sleutel, zodat de paginering consistent blijft.
SELECT id, name, price
FROM products
ORDER BY price DESC, id
LIMIT 10 OFFSET 20;Eén rij bovenaan
LIMIT 1 is een snelle manier om één rij op te halen, zoals het duurste product of de recentste bestelling. Combineer dit met de juiste ORDER BY.
SELECT name, price
FROM products
ORDER BY price DESC
LIMIT 1;Snelle controle
Je toont 10 rijen per pagina. Welke clausule levert pagina 3 op?
Samenvatting
Je kunt je resultaten nu opdelen:
LIMIT nbegrenst het aantal rijenOFFSET mslaat rijen over;OFFSET = (page-1)*size- Combineer dit altijd met
ORDER BYvoor voorspelbare pagina's - Geef voor snelheid de voorkeur aan keyset-paginering boven grote offsets
Vervolgens gebruik je deze hulpmiddelen om Top-N-records te vinden.
SELECT name, price
FROM products
ORDER BY name
LIMIT 10 OFFSET 20;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 “LIMIT en OFFSET” gratis?
Ja — de volledige tekst van “LIMIT en OFFSET” 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 “LIMIT en OFFSET”?
Haal de eerste N rijen op en gebruik paginering. 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 3 van 4.
Hoe lang duurt de les “LIMIT en OFFSET”?
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.