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 er udvikletping den applikation, der kรธrer oven pรฅ myflixdb. Vores systemdesigner har bedt os om at begrรฆnse antallet af poster, der vises pรฅ en side, til f.eks. 20 poster pr. side for at modvirke langsomme indlรฆsningstider. Hvordan implementerer vi et 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
