logo

Limit MySQL

MySQL Limit dotaz sa používa obmedziť počet riadkov sa vráti z množiny výsledkov, nie aportovanie celý súbor v databáze MySQL. Klauzula Limit funguje s príkazom SELECT len na vrátenie určeného počtu riadkov. Tento dotaz akceptuje iba jeden alebo dva argumenty a ich hodnoty by mali byť nula alebo akékoľvek kladné celé číslo.

Je to nevyhnutné v takom prípade, keď tabuľka obsahuje tisíce riadkov, alebo chcete vrátiť len nedávno vložené údaje. Inými slovami, ak nemáte záujem o získanie všetkých riadkov z dotazu, použite klauzulu MySQL Limit s príkazom SELECT. Zlepšuje výkon dotazu a dokonca zastaví pád systému, keď tabuľka obsahuje veľké množstvo údajov.

Na získanie iba určených riadkov z tabuľky MySQL používa LIMIT klauzulu, zatiaľ čo SQL používa TOP a Oracle používa klauzulu ROWNUM doložka s SELECT vyhlásenie.

Syntax

Nasleduje syntax použitia Limit dotazu v MySQL :

 SELECT column_list FROM table_name LIMIT offset, count; 

Vo vyššie uvedenej syntaxi môžeme vidieť:

Zoznam_stĺpcov: Je to názov stĺpca, ktorý chcete vrátiť.

Table_name: Je to názov tabuľky, ktorá obsahuje názov vášho stĺpca.

Offset: Určuje číslo riadku, z ktorého sa chcete vrátiť. Posun riadku začína od 0, nie od 1.

Počet: Určuje maximálny počet riadkov, ktoré chcete vrátiť.

Nasledujúce vizuálne znázornenie to vysvetľuje jasnejšie:

Limit MySQL

POZNÁMKA: Ak zadáte iba jeden argument s klauzulou Limit, MySQL to predpokladá na určenie maximálneho počtu riadkov na vrátenie výstupu zo sady výsledkov. V takom prípade sú argumenty klauzuly Limit, posun a počet ekvivalentné.

Klauzula LIMIT s doložkou ORDER BY

Používateľ musí použiť klauzulu Limit s klauzulou Order By . Bez použitia klauzuly Order By získate výsledok v nešpecifikovaná objednávka . V takom prípade je ťažké vedieť, z ktorých riadkov dotaz vracia výsledok. Je teda dobrým zvykom používať Zoskupiť podľa klauzuly s klauzulou Limit na získanie riadkov v konkrétnom poradí.

Na získanie výsledku v jedinečnom poradí možno použiť nasledujúcu syntax:

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

Príklady limitov MySQL

Poďme vytvoriť vzorovú tabuľku v databáze, ktorá obsahuje nasledujúce údaje, a pomocou rôznych príkladov pochopíme, ako klauzula Limit funguje v MySQL:

Tabuľka: zamestnanci

Limit MySQL

1. MySQL Limit na vrátenie najvyšších alebo najnižších riadkov

Toto vyhlásenie sa používalo na získanie piatich najlepších mladších zamestnancov:

 SELECT * FROM employees ORDER BY emp_age LIMIT 5; 

Tento príkaz najprv zoradí vek zamestnanca pomocou klauzuly Zoskupiť podľa a potom klauzula Limit vráti prvých päť výsledkov. Po vykonaní vyššie uvedených krokov dostaneme nasledujúci výstup:

Limit MySQL

2. MySQL Limit na získanie rozsahu riadkov pomocou offsetu

Niekedy chcete získať výsledok medzi rozsahmi hodnôt. Napríklad máte veľký počet riadkov na zobrazenie údajov o aplikáciách, potom ich rozdelíte na stránky a každá stránka obsahuje maximálne 10 riadkov v tabuľke. V takom prípade môžete použiť nasledujúci dotaz na získanie rozsahu riadkov:

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

Tento príkaz vráti riadky začínajúce od riadku číslo 3 a prejde maximálne na 7. riadok. Tiež triedi príjem zamestnanca od najvyšších po najnižšie. Vykonajte dotaz a dostanete nasledujúci výstup:

c kód abs
Limit MySQL

3. Limit MySQL s klauzulou WHERE

MySQL Limit sa dá pracovať aj s klauzulou WHERE. Najprv skontroluje špecifikovanú podmienku v tabuľke a vytvorí riadky, ktoré sa zhodujú s podmienkou.

Tento dotaz vyberie prvých päť zamestnancov, ktorých vek je vyšší ako 30. Tu sme tiež použili klauzulu Order By na zoradenie zamestnancov v zostupnom poradí podľa ich príjmu.

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

Po úspešnom vykonaní vyššie uvedeného príkazu dostaneme nasledujúci výstup:

Limit MySQL

4. MySQL LIMIT na získanie n-tej najvyššej alebo najnižšej hodnoty

Niekedy chceme získať riadky n-tej najvyššej alebo najnižšej hodnoty. V takom prípade môžeme na získanie očakávaného výsledku použiť nasledujúcu klauzulu MySQL LIMIT:

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

V tejto syntaxi klauzula LIMIT n-1, 1 vracia 1 riadok, ktorý začína v riadku n.

Napríklad nasledujúci dotaz vráti informácie o zamestnancovi, ktorý má druhý najvyšší príjem:

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

Po vykonaní vyššie uvedeného príkazu sa zobrazí nasledujúci dotaz:

Limit MySQL

Treba poznamenať, že vyššie uvedený dotaz funguje iba vtedy, keď vaša tabuľka neobsahuje dvoch zamestnancov, ktorí majú nejaký príjem. V takom prípade použijeme DENSE_RANK () aby ste získali presnejší výsledok.