MySQL LIMIT & OFFSET с примери
Какво представлява ключовата дума LIMIT?
Ключовата дума limit се използва за ограничаване на броя на редовете, върнати в резултат от заявка.
Може да се използва заедно с командите SELECT, UPDATE ИЛИ DELETE LIMIT синтаксис на ключова дума
Синтаксисът за ключовата дума LIMIT е както следва
SELECT {fieldname(s) | *} FROM tableName(s) [WHERE condition] LIMIT N;
ТУК
- „ИЗБЕРЕТЕ {име на поле(а) | *} FROM tableName(s)” е SELECT израз съдържащи полетата, които бихме искали да върнем в нашата заявка.
- „[WHERE условие]“ не е задължително, но когато е предоставено, може да се използва за указване на филтър в набора от резултати.
- „ГРАНИЦА N“ е ключовата дума и N е всяко число, започващо от 0, поставяйки 0, тъй като ограничението не връща никакви записи в заявката. Поставянето на число, например 5, ще върне пет записа. Ако записите в указаната таблица са по-малко от N, тогава всички записи от заявената таблица се връщат в резултатния набор.
Нека да разгледаме един пример –
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 |
Както можете да видите от горната екранна снимка, само двама членове са върнати.
Получаване на списък от десет (10) члена само от базата данни
Да предположим, че искаме да получим списък с първите 10 регистрирани членове от базата данни Myflix. Ще използваме следния скрипт, за да постигнем това.
SELECT * FROM members LIMIT 10;
Изпълнението на горния скрипт ни дава резултатите, показани по-долу
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 |
Обърнете внимание, че само 9 члена са върнати в нашата заявка, тъй като N в клаузата LIMIT е по-голям от общия брой записи в нашата таблица.
Пренаписване на горния скрипт, както следва
SELECT * FROM members LIMIT 9;
Връща само 9 реда в нашия набор от резултати на заявката.
Използване на OFF SET в заявката LIMIT
- ИЗМЕСТВАНЕ стойност също най-често се използва заедно с ключовата дума LIMIT. Стойността OFF SET ни позволява да посочим кой ред да започне от извличането на данни
Да предположим, че искаме да получим ограничен брой членове, започвайки от средата на редовете, можем да използваме ключовата дума LIMIT заедно със стойността на отместването, за да постигнем това. Скриптът, показан по-долу, получава данни, започвайки от втория ред и ограничава резултатите до 2.
SELECT * FROM `members` LIMIT 1, 2;
Изпълнение на горния скрипт в MySQL workbench срещу myflixdb дава следните резултати.
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
Кога трябва да използваме ключовата дума LIMIT?
Да предположим, че разработваме приложението, което работи върху myflixdb. Нашият системен дизайнер ни помоли да ограничим броя на записите, показвани на страница, до 20 записа на страница, за да се противопоставим на бавното зареждане. Как да приложим системата, която отговаря на тези потребителски изисквания? Ключовата дума LIMIT е полезна в такива ситуации. Ще можем да ограничим резултатите, върнати от заявка, до 20 записа само на страница.
Oбобщение
- Ключовата дума LIMIT на се използва за ограничаване на броя на редовете, върнати от набор от резултати.
- Числото LIMIT може да бъде всяко число от нула (0) нагоре. Когато нула (0) е зададена като ограничение, не се връщат редове от набора с резултати.
- Стойността OFF SET ни позволява да посочим кой ред да започне от извличането на данни
- Може да се използва заедно с командите SELECT, UPDATE ИЛИ DELETE LIMIT синтаксис на ключова дума