Poizvedba MySQL Limit se uporablja za omejiti število vrstic vrne iz niza rezultatov, namesto pridobivanje celoten niz v bazi podatkov MySQL. Klavzula Limit deluje s stavkom SELECT za vrnitev samo določenega števila vrstic. Ta poizvedba sprejme le enega ali dva argumenta, njuni vrednosti pa morata biti nič ali poljubno pozitivno celo število.
Bistvenega pomena je v primeru, ko tabela vsebuje na tisoče vrstic ali želite vrniti le nedavno vstavljene podatke. Z drugimi besedami, če vas ne zanima, da bi dobili vse vrstice, vrnjene iz poizvedbe, uporabite klavzulo MySQL Limit s stavkom SELECT. Izboljša učinkovitost poizvedbe in celo prepreči zrušitev sistema, ko tabela vsebuje veliko število podatkov.
Za pridobitev samo določenih vrstic iz tabele MySQL uporablja OMEJITEV stavek, medtem ko SQL uporablja TOP klavzulo, Oracle pa uporablja ROWNUM klavzula z IZBERI izjava.
Sintaksa
Spodaj je sintaksa uporabe poizvedbe Limit v MySQL :
SELECT column_list FROM table_name LIMIT offset, count;
V zgornji sintaksi lahko vidimo:
Seznam_stolpcev: To je ime stolpca, ki ga želite vrniti.
Ime_tabele: To je ime tabele, ki vsebuje ime vašega stolpca.
Odmik: Določa številko vrstice, iz katere se želite vrniti. Odmik vrstice se začne pri 0, ne 1.
štetje: Določa največje število vrstic, ki jih želite vrniti.
Naslednja vizualna predstavitev to bolj jasno pojasni:
OPOMBA: Če podate samo en argument s klavzulo Limit, MySQL predpostavlja, da to določi največje število vrstic za vrnitev izhoda iz niza rezultatov. V tem primeru so argumenti klavzule o omejitvi, odmik in štetje enakovredni.
Klavzula LIMIT s klavzulo ORDER BY
Uporabnik mora uporabiti klavzulo Limit s klavzulo Order By. Brez uporabe klavzule Order By boste rezultat dobili v nedoločeno naročilo . V tem primeru je težko vedeti, iz katerih vrstic poizvedba vrne rezultat. Torej je dobra navada za uporabo Klavzula Group By s klavzulo Limit za pridobivanje vrstic v določenem vrstnem redu.
Za pridobitev rezultata v edinstvenem vrstnem redu je mogoče uporabiti naslednjo sintakso:
SELECT column_list FROM table_name GROUP BY order_expression LIMIT offset, count;
Primeri omejitev MySQL
Ustvarimo vzorčno tabelo v bazi podatkov, ki vsebuje naslednje podatke in razumemo, kako klavzula Limit deluje v MySQL z uporabo različnih primerov:
Tabela: zaposleni
1. Omejitev MySQL za vrnitev najvišjih ali najnižjih vrstic
Naslednja izjava je bila uporabljena za pridobitev najboljših petih mlajših zaposlenih:
SELECT * FROM employees ORDER BY emp_age LIMIT 5;
Ta stavek najprej razvrsti starost zaposlenega s klavzulo Group By, nato pa klavzula Limit vrne rezultat prvih pet. Po izvedbi zgornjih korakov bomo dobili naslednji rezultat:
2. Omejitev MySQL za pridobivanje obsega vrstic z uporabo odmika
Včasih želite dobiti rezultat med razponi vrednosti. Na primer, imate veliko vrstic za prikaz podatkov o aplikacijah, nato pa jih razdelite na strani in vsaka stran vsebuje največ 10 vrstic v tabeli. V tem primeru lahko uporabite naslednjo poizvedbo, da dobite obseg vrstic:
SELECT emp_id, emp_name, income FROM employees ORDER BY income DESC LIMIT 3,7;
Ta stavek vrne vrstice, ki se začnejo od vrstice številka 3 in segajo do največ 7. vrstic. Prav tako razvrsti dohodek zaposlenega od najvišjega do najnižjega. Izvedite poizvedbo in dobili boste naslednje rezultate:
'kakšna je razlika med levom in tigrom'
3. Omejitev MySQL s klavzulo WHERE
MySQL Limit je mogoče delati tudi s členom WHERE. Najprej preveri podani pogoj v tabeli in izdela vrstice, ki se ujemajo s pogojem.
Ta poizvedba izbere prvih pet zaposlenih, katerih starost je večja od 30 let. Tukaj smo uporabili tudi klavzulo Order By, da zaposlene razvrstimo v padajočem vrstnem redu glede na njihov dohodek.
SELECT emp_name, emp_age, income FROM employees WHERE emp_age>30 ORDER BY income DESC LIMIT 5;
Po uspešni izvedbi zgornje izjave bomo dobili naslednji rezultat:
4. MySQL LIMIT, da dobite n-to najvišjo ali najnižjo vrednost
Včasih želimo dobiti vrstice z n-to najvišjo ali najnižjo vrednostjo. V tem primeru lahko uporabimo naslednjo klavzulo MySQL LIMIT, da dobimo pričakovani rezultat:
SELECT column_list FROM table_name ORDER BY expression LIMIT n-1, 1;
V tej sintaksi stavek LIMIT n-1, 1 vrne 1 vrstico, ki se začne v vrstici n.
Naslednja poizvedba na primer vrne podatke o zaposlenem, ki ima drugi najvišji dohodek:
SELECT emp_name, city, income FROM employees ORDER BY income LIMIT 1, 1;
Izvedba zgornjega stavka bo podala naslednjo poizvedbo:
Upoštevati je treba, da zgornja poizvedba deluje le, če vaša tabela ne vsebuje dveh zaposlenih, ki imata nekaj dohodka. V tem primeru bomo uporabili DENSE_RANK () da bi dobili natančnejši rezultat.