MySQL LIMIT & OFFSET esimerkein
Mikä on avainsana LIMIT?
Rajoitusavainsanaa käytetään rajoittamaan kyselytuloksessa palautettavien rivien määrää.
Sitä voidaan käyttää yhdessä SELECT-, UPDATE tai DELETE-komentojen LIMIT avainsanasyntaksin kanssa.
LIMIT-avainsanan syntaksi on seuraava
SELECT {fieldname(s) | *} FROM tableName(s) [WHERE condition] LIMIT N;
TÄÄLTÄ
- "VALITSE {kentännimi(t) | *} FROM tableName(s)” on SELECT-lause jotka sisältävät kentät, jotka haluamme palauttaa kyselyssämme.
- "[WHERE ehto]" on valinnainen, mutta kun se toimitetaan, sitä voidaan käyttää suodattimen määrittämiseen tulosjoukolle.
- "RAJA N" on avainsana ja N on mikä tahansa luku, joka alkaa 0:sta ja asetetaan 0, koska raja ei palauta tietueita kyselyyn. Jos laitat numeron 5, saat viisi tietuetta. Jos määritetyn taulukon tietueet ovat pienempiä kuin N, kaikki kyselyn taulukon tietueet palautetaan tulosjoukkoon.
Katsotaanpa esimerkkiä -
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 |
Kuten yllä olevasta kuvakaappauksesta näet, vain kaksi jäsentä on palautettu.
Kymmenen (10) jäsenen listan saaminen vain tietokannasta
Oletetaan, että haluamme saada listan 10 ensimmäisestä rekisteröityneestä jäsenestä Myflix-tietokannasta. Käytämme seuraavaa skriptiä saavuttaaksemme sen.
SELECT * FROM members LIMIT 10;
Yllä olevan skriptin suorittaminen antaa meille alla näkyvät tulokset
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 |
Huomaa, että kyselyssämme on palautettu vain 9 jäsentä, koska LIMIT-lauseen N on suurempi kuin taulukossamme olevien tietueiden kokonaismäärä.
Kirjoita yllä oleva skripti uudelleen seuraavasti
SELECT * FROM members LIMIT 9;
Palauttaa vain 9 riviä kyselyn tulosjoukossamme.
OFF SET -asetuksen käyttäminen LIMIT-kyselyssä
- OFF SET arvoa käytetään myös useimmiten yhdessä avainsanan LIMIT kanssa. OFF SET -arvon avulla voimme määrittää, mikä rivi aloittaa tietojen noutamisesta
Oletetaan, että haluamme saada rajoitetun määrän jäseniä alkaen rivien keskeltä, voimme käyttää avainsanaa LIMIT yhdessä offset-arvon kanssa saavuttaaksemme sen. Alla näkyvä komentosarja saa tiedot toisesta rivistä alkaen ja rajoittaa tulokset kahteen.
SELECT * FROM `members` LIMIT 1, 2;
Suoritetaan yllä oleva komentosarja MySQL työpenkki myflixdb:tä vastaan antaa seuraavat tulokset.
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
Milloin meidän tulisi käyttää avainsanaa LIMIT?
Oletetaan, että kehitämme sovellusta, joka toimii myflixdb:n päällä. Järjestelmäsuunnittelijamme on pyytänyt meitä rajoittamaan sivulla näytettävien tietueiden määrää esimerkiksi 20 tietueeseen sivulla hitaita latausaikoja vastaan. Miten otamme käyttöön järjestelmän, joka täyttää tällaiset käyttäjien vaatimukset? LIMIT-avainsana on hyödyllinen tällaisissa tilanteissa. Pystyisimme rajoittamaan kyselystä palautetut tulokset vain 20 tietueeseen sivua kohden.
Yhteenveto
- LIMIT-avainsanaa käytetään rajoittamaan tulosjoukosta palautettujen rivien määrää.
- LIMIT-luku voi olla mikä tahansa luku nollasta (0) ylöspäin. Kun rajaksi on määritetty nolla (0), tulosjoukosta ei palauteta rivejä.
- OFF SET -arvon avulla voimme määrittää, mikä rivi aloittaa tietojen noutamisesta
- Sitä voidaan käyttää yhdessä SELECT-, UPDATE tai DELETE-komentojen LIMIT avainsanasyntaksin kanssa.