MySQL LIMIT & OFFSET példákkal
Mi az a LIMIT kulcsszó?
A limit kulcsszó a lekérdezés eredményeként visszaadott sorok számának korlátozására szolgál.
A SELECT, UPDATE vagy DELETE parancsokkal együtt használható LIMIT kulcsszó szintaxis
A LIMIT kulcsszó szintaxisa a következő
SELECT {fieldname(s) | *} FROM tableName(s) [WHERE condition] LIMIT N;
ITT
- „SELECT {fieldname(s) | *} FROM tableName(s)” a SELECT utasítás amely tartalmazza azokat a mezőket, amelyeket vissza szeretnénk adni a lekérdezésünkben.
- „[WHERE feltétel]” opcionális, de ha van, akkor használható szűrő megadására az eredménykészleten.
- „LIMIT N” a kulcsszó és N a 0-tól kezdődő tetszőleges szám, 0-val a határértékként nem ad vissza rekordokat a lekérdezésben. Ha egy számot, mondjuk az 5-öt, öt rekordot ad vissza. Ha a megadott tábla rekordjai kisebbek, mint N, akkor a lekérdezett tábla összes rekordja visszaadásra kerül az eredményhalmazban.
Nézzünk egy példát –
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 |
Amint a fenti képernyőképen látható, csak két tagot küldtek vissza.
Tíz (10) tagból álló lista lekérése csak az adatbázisból
Tegyük fel, hogy szeretnénk lekérni az első 10 regisztrált tag listáját a Myflix adatbázisból. Ennek eléréséhez a következő szkriptet használjuk.
SELECT * FROM members LIMIT 10;
A fenti szkript végrehajtásával az alábbiakban látható eredményeket kapjuk
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 |
Vegye figyelembe, hogy a lekérdezésünkben csak 9 tagot adtunk vissza, mivel a LIMIT záradékban szereplő N nagyobb, mint a táblázatunkban szereplő összes rekord száma.
A fenti szkript újraírása az alábbiak szerint
SELECT * FROM members LIMIT 9;
Csak 9 sort ad vissza a lekérdezési eredménykészletünkben.
Az OFF SET használata a LIMIT lekérdezésben
A OFF SET értéket is leggyakrabban a LIMIT kulcsszóval együtt használják. Az OFF SET érték lehetővé teszi, hogy megadjuk, melyik sort kezdjük az adatok lekérésével
Tegyük fel, hogy a sorok közepétől kezdve korlátozott számú tagot szeretnénk kapni, ehhez használhatjuk a LIMIT kulcsszót az offset értékkel együtt. Az alább látható szkript a második sortól kezdődően kapja meg az adatokat, és 2-re korlátozza az eredményeket.
SELECT * FROM `members` LIMIT 1, 2;
A fenti szkript végrehajtása MySQL munkapad a myflixdb ellen a következő eredményeket adja.
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
Mikor használjuk a LIMIT kulcsszót?
Tegyük fel, hogy a myflixdb tetején futó alkalmazást fejlesztjük. Rendszertervezőnk arra kért minket, hogy korlátozzuk az egy oldalon megjelenített rekordok számát, mondjuk 20 rekordra, hogy megakadályozzuk a lassú betöltési időt. Hogyan hozzuk létre azt a rendszert, amely megfelel az ilyen felhasználói követelményeknek? A LIMIT kulcsszó jól jön ilyen helyzetekben. A lekérdezésből visszaadott eredményeket oldalanként csak 20 rekordra tudnánk korlátozni.
Összegzésként
- A LIMIT kulcsszó az eredménykészletből visszaadott sorok számának korlátozására szolgál.
- A LIMIT szám tetszőleges szám lehet nullától (0) felfelé haladva. Ha nulla (0) van megadva határértékként, a rendszer nem ad vissza sorokat az eredményhalmazból.
- Az OFF SET érték lehetővé teszi, hogy megadjuk, melyik sort kezdjük az adatok lekérésével
- A SELECT, UPDATE vagy DELETE parancsokkal együtt használható LIMIT kulcsszó szintaxis