MySQL LIMIT & OFFSET med eksempler
Hvad er søgeordet LIMIT?
Limit søgeordet bruges til at begrænse antallet af rækker, der returneres i et forespørgselsresultat.
Det kan bruges sammen med kommandoerne SELECT, UPDATE ELLER DELETE LIMIT nøgleordssyntaks
Syntaksen for søgeordet LIMIT er som følger
SELECT {fieldname(s) | *} FROM tableName(s) [WHERE condition] LIMIT N;
HER
- "VÆLG {feltnavn(e) | *} FRA tabelnavn(e)" er SELECT erklæring indeholdende de felter, som vi gerne vil returnere i vores forespørgsel.
- "[WHERE-tilstand]" er valgfri, men når den leveres, kan den bruges til at angive et filter på resultatsættet.
- "LIMIT N" er nøgleordet og N er et vilkårligt tal, der starter fra 0, og at sætte 0, da grænsen ikke returnerer nogen poster i forespørgslen. Hvis du sætter et tal til at sige 5, returneres fem poster. Hvis posterne i den angivne tabel er mindre end N, returneres alle posterne fra den forespurgte tabel i resultatsættet.
Lad os se på et eksempel -
SELECT * FROM members LIMIT 2;
membership_ number | full_ names | gender | date_of _birth | date_of _registration | physical_ address | postal_ address | contact_ number | credit_ card_ number | |
---|---|---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | NULL | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm | NULL |
2 | Janet Smith Jones | Female | 23-06-1980 | NULL | Melrose 123 | NULL | NULL | jj@fstreet.com | NULL |
Som du kan se fra ovenstående skærmbillede, er kun to medlemmer blevet returneret.
Får kun en liste med ti (10) medlemmer fra databasen
Lad os antage, at vi ønsker at få en liste over de første 10 registrerede medlemmer fra Myflix-databasen. Vi ville bruge følgende script til at opnå det.
SELECT * FROM members LIMIT 10;
Udførelse af ovenstående script giver os resultaterne vist nedenfor
membership_ number | full_ names | gender | date_of _birth | date_of _registration | physical_ address | postal_ address | contact_ number | credit_ card_ number | |
---|---|---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | NULL | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm | NULL |
2 | Janet Smith Jones | Female | 23-06-1980 | NULL | Melrose 123 | NULL | NULL | jj@fstreet.com | NULL |
3 | Robert Phil | Male | 12-07-1989 | NULL | 3rd Street 34 | NULL | 12345 | rm@tstreet.com | NULL |
4 | Gloria Williams | Female | 14-02-1984 | NULL | 2nd Street 23 | NULL | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | NULL | Woodcrest | NULL | 845738767 | NULL | NULL |
6 | Sheldon Cooper | Male | NULL | NULL | Woodcrest | NULL | 976736763 | NULL | NULL |
7 | Rajesh Koothrappali | Male | NULL | NULL | Woodcrest | NULL | 938867763 | NULL | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | NULL | Woodcrest | NULL | 987636553 | NULL | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | NULL | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me | NULL |
Bemærk, at kun 9 medlemmer er blevet returneret i vores forespørgsel, da N i LIMIT-sætningen er større end antallet af samlede poster i vores tabel.
Omskrivning af ovenstående script som følger
SELECT * FROM members LIMIT 9;
Returnerer kun 9 rækker i vores forespørgselsresultatsæt.
Brug af OFF SET i LIMIT-forespørgslen
OFF SET værdi bruges også oftest sammen med søgeordet LIMIT. OFF SET-værdien giver os mulighed for at angive, hvilken række der skal starte med at hente data
Lad os antage, at vi ønsker at få et begrænset antal medlemmer fra midten af rækkerne, vi kan bruge søgeordet LIMIT sammen med offsetværdien for at opnå det. Scriptet vist nedenfor får data fra den anden række og begrænser resultaterne til 2.
SELECT * FROM `members` LIMIT 1, 2;
Udførelse af ovenstående script i MySQL workbench mod myflixdb giver følgende resultater.
membership_ number | full_ names | gender | date_of _birth | date_of _registration | physical_ address | postal_ address | contact_ number | credit_ card_ number | |
---|---|---|---|---|---|---|---|---|---|
2 | Janet Smith Jones | Female | 23-06-1980 | NULL | Melrose 123 | NULL | NULL | jj@fstreet.com | NULL |
3 | Robert Phil | Male | 12-07-1989 | NULL | 3rd Street 34 | NULL | 12345 | rm@tstreet.com | NULL |
Note that here OFFSET = 1 Hence row#2 is returned & Limit = 2, Hence only 2 records are returned
Hvornår skal vi bruge søgeordet LIMIT?
Lad os antage, at vi udvikler applikationen, der kører oven på myflixdb. Vores systemdesigner har bedt os om at begrænse antallet af poster, der vises på en side, til at sige 20 poster pr. side for at modvirke langsomme indlæsningstider. Hvordan går vi om at implementere det system, der opfylder sådanne brugerkrav? Nøgleordet LIMIT er praktisk i sådanne situationer. Vi ville være i stand til at begrænse de resultater, der returneres fra en forespørgsel, til kun 20 poster pr. side.
Resumé
- Nøgleordet LIMIT bruges til at begrænse antallet af rækker, der returneres fra et resultatsæt.
- LIMIT-tallet kan være et hvilket som helst tal fra nul (0) og opad. Når nul (0) er angivet som grænse, returneres ingen rækker fra resultatsættet.
- OFF SET-værdien giver os mulighed for at angive, hvilken række der skal starte med at hente data
- Det kan bruges sammen med kommandoerne SELECT, UPDATE ELLER DELETE LIMIT nøgleordssyntaks