MySQL LIMIT & OFFSET s příklady
Co je klíčové slovo LIMIT?
Klíčové slovo limit se používá k omezení počtu řádků vrácených ve výsledku dotazu.
Lze jej použít ve spojení se syntaxí klíčového slova LIMIT příkazů SELECT, UPDATE OR DELETE
Syntaxe klíčového slova LIMIT je následující
SELECT {fieldname(s) | *} FROM tableName(s) [WHERE condition] LIMIT N;
ZDE
- “SELECT {název pole | *} FROM tableName(s)” je příkaz SELECT obsahující pole, která bychom chtěli v našem dotazu vrátit.
- “[KDE podmínka]” je volitelný, ale pokud je dodán, lze jej použít k určení filtru v sadě výsledků.
- „LIMIT N“ je klíčové slovo a N je libovolné číslo začínající od 0, přičemž 0 jako limit nevrátí žádné záznamy v dotazu. Zadáním čísla řekněme 5 vrátíte pět záznamů. Pokud jsou záznamy v zadané tabulce menší než N, pak jsou ve výsledkové sadě vráceny všechny záznamy z dotazované tabulky.
Podívejme se na příklad –
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 |
Jak můžete vidět z výše uvedeného snímku obrazovky, byli vráceni pouze dva členové.
Získání seznamu deseti (10) členů pouze z databáze
Předpokládejme, že chceme získat seznam prvních 10 registrovaných členů z databáze Myflix. K tomu bychom použili následující skript.
SELECT * FROM members LIMIT 10;
Spuštění výše uvedeného skriptu nám poskytne výsledky uvedené níže
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 |
Všimněte si, že v našem dotazu bylo vráceno pouze 9 členů, protože N v klauzuli LIMIT je větší než počet celkových záznamů v naší tabulce.
Přepište výše uvedený skript následovně
SELECT * FROM members LIMIT 9;
Vrátí pouze 9 řádků v naší sadě výsledků dotazu.
Použití OFF SET v dotazu LIMIT
Jedno OFF SET value se také nejčastěji používá společně s klíčovým slovem LIMIT. Hodnota OFF SET nám umožňuje určit, který řádek má začít s načítáním dat
Předpokládejme, že chceme získat omezený počet členů od středu řádků, můžeme k tomu použít klíčové slovo LIMIT spolu s hodnotou offsetu. Skript zobrazený níže získává data od druhého řádku a omezuje výsledky na 2.
SELECT * FROM `members` LIMIT 1, 2;
Spuštění výše uvedeného skriptu v MySQL workbench proti myflixdb dává následující výsledky.
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
Kdy bychom měli použít klíčové slovo LIMIT?
Předpokládejme, že vyvíjíme aplikaci, která běží nad myflixdb. Náš systémový návrhář nás požádal, abychom omezili počet záznamů zobrazených na stránce na řekněme 20 záznamů na stránku, abychom zabránili pomalému načítání. Jak postupujeme při implementaci systému, který splňuje takové požadavky uživatelů? Klíčové slovo LIMIT se v takových situacích hodí. Výsledky vrácené z dotazu bychom mohli omezit pouze na 20 záznamů na stránku.
Shrnutí
- Klíčové slovo LIMIT of se používá k omezení počtu řádků vrácených ze sady výsledků.
- Číslo LIMIT může být libovolné číslo od nuly (0) směrem nahoru. Když je jako limit zadán nula (0), nejsou vráceny žádné řádky ze sady výsledků.
- Hodnota OFF SET nám umožňuje určit, který řádek má začít s načítáním dat
- Lze jej použít ve spojení se syntaxí klíčového slova LIMIT příkazů SELECT, UPDATE OR DELETE