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
0als 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.