MySQL
Limiet en offset
Zoeken…
Syntaxis
- SELECT kolom_1 [, kolom_2]
VANAF tabel_1
BESTELLEN OP order_kolom
LIMIT row_count [OFFSET row_offset] - SELECT kolom_1 [, kolom_2]
VANAF tabel_1
BESTELLEN OP order_kolom
LIMIT [row_offset,] row_count
Opmerkingen
"Limiet" kan "Max aantal rijen in een tabel" betekenen.
"Offset" betekent kiezen uit row
(niet te verwarren met primaire sleutelwaarde of veldwaarde)
Beperking en offset-relatie
Gezien de volgende users
:
ID kaart | gebruikersnaam |
---|---|
1 | Gebruiker1 |
2 | User2 |
3 | User3 |
4 | Gebruiker4 |
5 | User5 |
Om het aantal rijen in de resultatenset van een SELECT
query te beperken, kan de clausule LIMIT
samen met een of twee positieve gehele getallen als argumenten worden gebruikt (inclusief nul).
LIMIT
clausule met één argument
Wanneer één argument wordt gebruikt, wordt de resultatenset alleen beperkt tot het nummer dat op de volgende manier wordt opgegeven:
SELECT * FROM users ORDER BY id ASC LIMIT 2
ID kaart | gebruikersnaam |
---|---|
1 | Gebruiker1 |
2 | User2 |
Als de waarde van het argument 0
, is de resultatenset leeg.
Merk ook op dat de ORDER BY
clausule belangrijk kan zijn om de eerste rijen van de resultatenset op te geven die zullen worden gepresenteerd (bij bestelling in een andere kolom).
LIMIT
clausule met twee argumenten
Wanneer twee argumenten worden gebruikt in een LIMIT
clausule:
- het eerste argument vertegenwoordigt de rij waaruit de rijen met resultaatsets zullen worden gepresenteerd - dit aantal wordt vaak als een offset genoemd , omdat het de rij voor de eerste rij van de beperkte resultaatset vertegenwoordigt. Hierdoor kan het argument
0
als waarde ontvangen en dus rekening houden met de eerste rij van de niet-beperkte resultaatset. - het tweede argument geeft het maximumaantal rijen aan dat moet worden geretourneerd in de resultatenset (vergelijkbaar met het voorbeeld van het ene argument).
Daarom is de vraag:
SELECT * FROM users ORDER BY id ASC LIMIT 2, 3
Presenteert de volgende resultatenset:
ID kaart | gebruikersnaam |
---|---|
3 | User3 |
4 | Gebruiker4 |
5 | User5 |
Merk op dat wanneer het offset- argument 0
, de resultatenset equivalent zal zijn aan een LIMIT
clausule met één argument. Dit betekent dat de volgende 2 zoekopdrachten:
SELECT * FROM users ORDER BY id ASC LIMIT 0, 2
SELECT * FROM users ORDER BY id ASC LIMIT 2
Produceer dezelfde resultatenset:
ID kaart | gebruikersnaam |
---|---|
1 | Gebruiker1 |
2 | User2 |
OFFSET
trefwoord: alternatieve syntaxis
Een alternatieve syntaxis voor de clausule LIMIT
met twee argumenten bestaat uit het gebruik van het sleutelwoord OFFSET
na het eerste argument op de volgende manier:
SELECT * FROM users ORDER BY id ASC LIMIT 2 OFFSET 3
Deze zoekopdracht levert de volgende resultatenset op:
ID kaart | gebruikersnaam |
---|---|
3 | User3 |
4 | Gebruiker4 |
Merk op dat in deze alternatieve syntaxis de argumenten van positie zijn veranderd:
het eerste argument vertegenwoordigt het aantal rijen dat moet worden geretourneerd in de resultatenset;
het tweede argument vertegenwoordigt de offset.