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 email 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 email 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 email 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