logo

Ограничение на MySQL

Заявката за ограничение на MySQL се използва за ограничавам броят редове се връща от резултатния набор, а не извличане целия набор в базата данни MySQL. Клаузата Limit работи с оператора SELECT за връщане само на определения брой редове. Тази заявка приема само един или два аргумента и техните стойности трябва да са нула или което и да е положително цяло число.

Това е от съществено значение в такъв случай, когато таблицата съдържа хиляди редове или искате да върнете само наскоро въведените данни. С други думи, ако не се интересувате да получите всички редове, върнати от заявката, използвайте клаузата MySQL Limit с израза SELECT. Подобрява производителността на заявката и дори спира срива на системата, когато таблицата съдържа голям брой данни.

За да получи само посочените редове от таблицата, MySQL използва ОГРАНИЧЕНИЕ клауза, докато SQL използва ВРЪХ клауза и Oracle използва ROWNUM клауза с ИЗБЕРЕТЕ изявление.

Синтаксис

По-долу е синтаксисът за използване на Limit query в MySQL :

 SELECT column_list FROM table_name LIMIT offset, count; 

В горния синтаксис можем да видим:

Списък_колони: Това е името на колоната, която искате да върнете.

Table_name: Това е името на таблицата, която съдържа името на вашата колона.

Изместване: Той указва номера на ред, от който искате да се върнете. Отместването на реда започва от 0, а не от 1.

Броя: Той определя максималния брой редове, които искате да върнете.

Следното визуално представяне го обяснява по-ясно:

Ограничение на MySQL

ЗАБЕЛЕЖКА: Ако зададете само един аргумент с клаузата Limit, MySQL приема това, за да определи максималния брой редове за връщане на изход от набора от резултати. В този случай аргументите на клаузата за ограничение, отместването и броят са еквивалентни.

Клауза LIMIT с клауза ORDER BY

Потребителят трябва да използва клаузата Limit с клаузата Order By. Без да използвате клаузата Order By, ще получите резултата в неуточнена поръчка . В този случай е трудно да се знае, че заявката връща резултат от кои редове. Така че е добър навик да се използва Групиране по клауза с клауза Limit за получаване на редовете в определен ред.

Следният синтаксис може да се използва за получаване на резултата в уникален ред:

 SELECT column_list FROM table_name GROUP BY order_expression LIMIT offset, count; 

Примери за ограничения на MySQL

Нека създадем примерна таблица в базата данни, която съдържа следните данни и да разберем как работи клаузата Limit в MySQL, използвайки различни примери:

Маса: служители

Ограничение на MySQL

1. MySQL Limit за връщане на най-високите или най-ниските редове

Следното твърдение се използва за определяне на петте най-млади служители:

 SELECT * FROM employees ORDER BY emp_age LIMIT 5; 

Този израз първо сортира възрастта на служителите с помощта на клаузата Group By, а след това клаузата Limit връща резултата от първите пет. След като изпълним горните стъпки, ще получим следния резултат:

Ограничение на MySQL

2. MySQL Limit за получаване на диапазон от редове с помощта на отместване

Понякога искате да получите резултат между диапазоните от стойности. Например имате голям брой редове за показване на данни за приложения, след което ги разделяте на страници и всяка страница съдържа максимум 10 реда в таблица. В този случай можете да използвате следната заявка, за да получите набор от редове:

 SELECT emp_id, emp_name, income FROM employees ORDER BY income DESC LIMIT 3,7; 

Този оператор връща редовете, започващи от ред номер 3 и достига до максимум 7-ми ред. Той също така сортира доходите на служителя в най-висок към най-нисък ред. Изпълнете заявката и ще получите следния резултат:

синтаксис на git pull
Ограничение на MySQL

3. Ограничение на MySQL с клауза WHERE

MySQL Limit може да се работи и с WHERE клауза. Първо проверява определеното условие в таблицата и създава редовете, които отговарят на условието.

Тази заявка избира първите петима служители, чиято възраст е над 30 години. Тук също използвахме клаузата Order By, за да сортираме служителите в низходящ ред, като използваме техните доходи.

 SELECT emp_name, emp_age, income FROM employees WHERE emp_age>30 ORDER BY income DESC LIMIT 5; 

След успешното изпълнение на горния оператор, ще получим следния изход:

Ограничение на MySQL

4. MySQL LIMIT, за да получите n-тата най-висока или най-ниска стойност

Понякога искаме да получим редовете с n-та най-висока или най-ниска стойност. В този случай можем да използваме следната клауза MySQL LIMIT, за да получим очаквания резултат:

 SELECT column_list FROM table_name ORDER BY expression LIMIT n-1, 1; 

В този синтаксис клаузата LIMIT n-1, 1 връща 1 ред, който започва от ред n.

Например следната заявка връща информацията за служителя, който има втория най-висок доход:

 SELECT emp_name, city, income FROM employees ORDER BY income LIMIT 1, 1; 

Изпълнявайки горния оператор, той ще даде следната заявка:

Ограничение на MySQL

Трябва да се отбележи, че горната заявка работи само когато вашата таблица не съдържа двама служители, които имат някакъв доход. В такъв случай ще използваме DENSE_RANK () за да получите по-точен резултат.