MySQL
Begränsning och förskjutning
Sök…
Syntax
- VÄLJ kolumn_1 [, kolumn_2]
FRÅN tabell_1
BESTÄLLNING AV order_kolumn
LIMIT row_count [OFFSET row_offset] - VÄLJ kolumn_1 [, kolumn_2]
FRÅN tabell_1
BESTÄLLNING AV order_kolumn
LIMIT [rad_offset,] rad_antal
Anmärkningar
"Limit" kan betyda "Max antal rader i en tabell".
"Offset" betyder val från row
(inte förväxlas av primärt nyckelvärde eller något fältdatavärde)
Begränsning och förskjutning
Med tanke på följande users
:
id | Användarnamn |
---|---|
1 | user1 |
2 | User2 |
3 | användare3 |
4 | Användare4 |
5 | user5 |
För att begränsa antalet rader i resultatuppsättningen för en SELECT
fråga kan LIMIT
klausulen användas tillsammans med ett eller två positiva heltal som argument (noll ingår).
LIMIT
klausul med ett argument
När ett argument används kommer resultatuppsättningen endast att begränsas till det nummer som anges på följande sätt:
SELECT * FROM users ORDER BY id ASC LIMIT 2
id | Användarnamn |
---|---|
1 | user1 |
2 | User2 |
Om argumentets värde är 0
kommer resultatset att vara tomt.
Observera också att ORDER BY
klausulen kan vara viktig för att ange de första raderna i resultatset som kommer att presenteras (när du beställer av en annan kolumn).
LIMIT
klausul med två argument
När två argument används i en LIMIT
klausul:
- det första argumentet representerar raden från vilken resultatuppsättningsraderna kommer att presenteras - detta nummer nämns ofta som en förskjutning , eftersom det representerar raden före den första raden i den begränsade resultatsatsen. Detta gör det möjligt för argumentet att få
0
som värde och därmed beakta den första raden i det icke-begränsade resultatset. - det andra argumentet anger det maximala antalet rader som ska returneras i resultatuppsättningen (på samma sätt som ett argumentets exempel).
Därför frågan:
SELECT * FROM users ORDER BY id ASC LIMIT 2, 3
Presenterar följande resultatuppsättning:
id | Användarnamn |
---|---|
3 | användare3 |
4 | Användare4 |
5 | user5 |
Lägg märke till att när offsetargumentet är 0
, kommer resultatuppsättningen att motsvara en LIMIT
klausul med ett argument. Detta innebär att följande två frågor:
SELECT * FROM users ORDER BY id ASC LIMIT 0, 2
SELECT * FROM users ORDER BY id ASC LIMIT 2
Producera samma resultatuppsättning:
id | Användarnamn |
---|---|
1 | user1 |
2 | User2 |
OFFSET
nyckelord: alternativ syntax
En alternativ syntax för LIMIT
klausulen med två argument består i användningen av OFFSET
nyckelordet efter det första argumentet på följande sätt:
SELECT * FROM users ORDER BY id ASC LIMIT 2 OFFSET 3
Denna fråga skulle returnera följande resultatuppsättning:
id | Användarnamn |
---|---|
3 | användare3 |
4 | Användare4 |
Lägg märke till att argumenten i denna alternativa syntax har ändrat sina positioner:
det första argumentet representerar antalet rader som ska returneras i resultatuppsättningen;
det andra argumentet representerar offset.