MySQL Limit upit se koristi za ograničiti broj redaka vraća se iz skupa rezultata, a ne dohvaćanje cijeli skup u MySQL bazi podataka. Klauzula Limit radi s naredbom SELECT za vraćanje samo navedenog broja redaka. Ovaj upit prihvaća samo jedan ili dva argumenta, a njihove vrijednosti trebaju biti nula ili bilo koji pozitivni cijeli broj.
Bitno je u slučaju kada tablica sadrži tisuće redaka ili želite vratiti samo nedavno unesene podatke. Drugim riječima, ako niste zainteresirani da dobijete sve retke vraćene iz upita, koristite klauzulu MySQL Limit s naredbom SELECT. Poboljšava izvedbu upita i čak zaustavlja pad sustava kada tablica sadrži velik broj podataka.
Da bi dobio samo navedene retke iz tablice, MySQL koristi OGRANIČITI klauzula, dok SQL koristi VRH klauzulu, a Oracle koristi ROWNUM klauzula s IZABERI izjava.
Sintaksa
Slijedi sintaksa korištenja Limit query in MySQL :
SELECT column_list FROM table_name LIMIT offset, count;
U gornjoj sintaksi možemo vidjeti:
Popis_stupaca: To je naziv stupca koji želite vratiti.
Table_name: To je naziv tablice koja sadrži naziv vašeg stupca.
Pomak: Određuje broj retka iz kojeg se želite vratiti. Pomak retka počinje od 0, a ne od 1.
Računati: Određuje najveći broj redaka koje želite vratiti.
Sljedeći vizualni prikaz to jasnije objašnjava:
NAPOMENA: Ako navedete samo jedan argument s klauzulom Limit, MySQL pretpostavlja da to određuje maksimalan broj redaka za vraćanje izlaza iz skupa rezultata. U tom slučaju, argumenti klauzule ograničenja, pomak i broj su ekvivalentni.
Klauzula LIMIT s klauzulom ORDER BY
Korisnik mora koristiti klauzulu Limit s klauzulom Order By. Bez korištenja klauzule Order By, dobit ćete rezultat u neodređen red . U tom je slučaju teško znati iz kojih redaka upit vraća rezultat. Dakle, to je dobra navika za korištenje Klauzula Group By s klauzulom Limit za dobivanje redaka određenim redoslijedom.
Sljedeća sintaksa može se koristiti za dobivanje rezultata u jedinstvenom redoslijedu:
SELECT column_list FROM table_name GROUP BY order_expression LIMIT offset, count;
Primjeri MySQL ograničenja
Kreirajmo primjer tablice u bazi podataka koja sadrži sljedeće podatke i shvatimo kako klauzula Limit radi u MySQL-u koristeći razne primjere:
Tablica: zaposlenici
1. MySQL Limit za vraćanje najviših ili najnižih redaka
Sljedeća izjava korištena je za odabir prvih pet mlađih zaposlenika:
SELECT * FROM employees ORDER BY emp_age LIMIT 5;
Ova izjava prvo razvrstava dob zaposlenika pomoću klauzule Group By, a zatim klauzula Limit vraća rezultat prvih pet. Nakon izvršenja gornjih koraka, dobit ćemo sljedeći rezultat:
2. MySQL Limit za dobivanje raspona redaka pomoću pomaka
Ponekad želite dobiti rezultat između raspona vrijednosti. Na primjer, imate velik broj redaka za prikaz podataka o aplikacijama, zatim ih podijelite na stranice, a svaka stranica sadrži maksimalno 10 redaka u tablici. U tom slučaju možete upotrijebiti sljedeći upit da dobijete raspon redaka:
SELECT emp_id, emp_name, income FROM employees ORDER BY income DESC LIMIT 3,7;
Ova izjava vraća retke počevši od retka broj 3 i ide do najviše 7. redaka. Također razvrstava dohodak zaposlenika od najvećeg do najnižeg reda. Izvršite upit i dobit ćete sljedeći izlaz:
css poravnavanje slika
3. MySQL ograničenje s WHERE klauzulom
MySQL Limit također se može raditi s WHERE klauzulom. Prvo provjerava navedeni uvjet u tablici i proizvodi retke koji odgovaraju uvjetu.
Ovaj upit odabire prvih pet zaposlenika čija je dob starija od 30 godina. Ovdje smo također upotrijebili klauzulu Order By za sortiranje zaposlenika silaznim redoslijedom prema njihovim prihodima.
SELECT emp_name, emp_age, income FROM employees WHERE emp_age>30 ORDER BY income DESC LIMIT 5;
Nakon uspješnog izvođenja gornje naredbe, dobit ćemo sljedeći izlaz:
4. MySQL LIMIT za dobivanje n-te najveće ili najniže vrijednosti
Ponekad želimo dobiti retke n-te najveće ili najniže vrijednosti. U tom slučaju možemo upotrijebiti sljedeću klauzulu MySQL LIMIT da dobijemo očekivani rezultat:
SELECT column_list FROM table_name ORDER BY expression LIMIT n-1, 1;
U ovoj sintaksi klauzula LIMIT n-1, 1 vraća 1 redak koji počinje u retku n.
Na primjer, sljedeći upit vraća podatke o zaposleniku koji ima drugi najveći prihod:
SELECT emp_name, city, income FROM employees ORDER BY income LIMIT 1, 1;
Izvršavajući gornju izjavu, dat će sljedeći upit:
Treba napomenuti da gornji upit radi samo kada vaša tablica ne sadrži dva zaposlenika koji imaju neki prihod. U tom slučaju ćemo koristiti DENSE_RANK () da biste dobili točniji rezultat.