MySQL Limit užklausa naudojama apriboti iš rezultatų rinkinio grąžinamas eilučių skaičius, o ne atsinešimas visas rinkinys MySQL duomenų bazėje. Limit sąlyga veikia su SELECT teiginiu, kad būtų pateiktas tik nurodytas eilučių skaičius. Ši užklausa priima tik vieną ar du argumentus, o jų reikšmės turi būti nulis arba bet koks teigiamas sveikasis skaičius.
Tai būtina tokiu atveju, kai lentelėje yra tūkstančiai eilučių arba norite grąžinti tik neseniai įterptus duomenis. Kitaip tariant, jei nesate suinteresuoti, kad visos užklausos eilutės būtų grąžintos, naudokite MySQL Limit sąlygą su sakiniu SELECT. Tai pagerina užklausos našumą ir netgi nustoja sugriauti sistemą, kai lentelėje yra daug duomenų.
Norėdami gauti tik nurodytas lentelės eilutes, MySQL naudoja LIMIT sąlyga, o SQL naudoja VIRŠUS sąlygą, o „Oracle“ naudoja ROWNUM sąlyga su PASIRINKTI pareiškimas.
Sintaksė
Toliau pateikiama Limit užklausos naudojimo sintaksė MySQL :
SELECT column_list FROM table_name LIMIT offset, count;
Aukščiau pateiktoje sintaksėje matome:
Column_list: Tai stulpelio, kurį norite grąžinti, pavadinimas.
Lentelės_pavadinimas: Tai yra lentelės, kurioje yra jūsų stulpelio pavadinimas, pavadinimas.
Poslinkis: Nurodomas eilutės, iš kurios norite grįžti, skaičius. Eilutės poslinkis prasideda nuo 0, o ne nuo 1.
Skaičiavimas: Jame nurodomas maksimalus norimų grąžinti eilučių skaičius.
Šis vaizdinis vaizdas tai aiškiau paaiškina:
PASTABA: Jei nurodote tik vieną argumentą su sąlyga Limit, MySQL tai daro prielaida, kad nustatytų didžiausią eilučių skaičių, grąžinant išvestį iš rezultatų rinkinio. Tokiu atveju Ribinės sąlygos argumentai, poslinkis ir skaičius yra lygiaverčiai.
LIMIT sąlyga su ORDER BY sąlyga
Vartotojas turi naudoti Limit sąlygą su sąlyga Order By . Nenaudodami sąlygos Order By, rezultatą gausite an nenurodyta tvarka . Tokiu atveju sunku žinoti, iš kurių eilučių užklausa pateikia rezultatą. Taigi, tai yra geras įprotis naudoti Grupė pagal sąlygą su limito sąlyga, skirta eilėms gauti tam tikra tvarka.
Norint gauti rezultatą unikalia tvarka, galima naudoti šią sintaksę:
SELECT column_list FROM table_name GROUP BY order_expression LIMIT offset, count;
MySQL apribojimų pavyzdžiai
Sukurkime duomenų bazėje pavyzdinę lentelę, kurioje būtų šie duomenys, ir supraskime, kaip Limit sąlyga veikia MySQL naudojant įvairius pavyzdžius:
Lentelė: darbuotojai
1. MySQL limitas, kad būtų grąžintos aukščiausios arba žemiausios eilutės
Šis teiginys buvo naudojamas penkiems jaunesniems darbuotojams gauti:
SELECT * FROM employees ORDER BY emp_age LIMIT 5;
Šis teiginys pirmiausia surūšiuoja darbuotojo amžių pagal sąlygą „Group By“, o tada „Limit“ sąlyga pateikia penketuką. Atlikę aukščiau nurodytus veiksmus, gausime tokią išvestį:
2. MySQL limitas, norint gauti eilučių diapazoną naudojant poslinkį
Kartais norite gauti rezultatą tarp verčių diapazonų. Pavyzdžiui, turite daug eilučių, kad būtų rodomi programų duomenys, tada padalinkite juos į puslapius ir kiekviename puslapyje yra ne daugiau kaip 10 lentelės eilučių. Tokiu atveju galite naudoti šią užklausą, kad gautumėte eilučių diapazoną:
SELECT emp_id, emp_name, income FROM employees ORDER BY income DESC LIMIT 3,7;
Šis teiginys grąžina eilutes, pradedant nuo 3 eilutės ir pasiekia daugiausia 7-ą eilutę. Ji taip pat suskirsto darbuotojo pajamas nuo didžiausios iki mažiausios eilės tvarka. Vykdykite užklausą ir gausite tokią išvestį:
gijų sinchronizavimas
3. MySQL riba su WHERE sąlyga
MySQL Limit taip pat galima dirbti su WHERE sąlyga. Pirmiausia ji patikrina nurodytą sąlygą lentelėje ir sukuria sąlygą atitinkančias eilutes.
Ši užklausa atrenka pirmuosius penkis darbuotojus, kurių amžius yra didesnis nei 30 metų. Čia taip pat naudojome sąlygą Užsakymas, norėdami surūšiuoti darbuotojus mažėjančia tvarka pagal jų pajamas.
SELECT emp_name, emp_age, income FROM employees WHERE emp_age>30 ORDER BY income DESC LIMIT 5;
Sėkmingai įvykdę aukščiau pateiktą teiginį, gausime tokią išvestį:
4. MySQL LIMIT, kad gautumėte n-tą didžiausią arba mažiausią reikšmę
Kartais norime gauti n-osios didžiausios arba mažiausios reikšmės eilutes. Tokiu atveju galime naudoti šią MySQL LIMIT sąlygą, kad gautume laukiamą rezultatą:
SELECT column_list FROM table_name ORDER BY expression LIMIT n-1, 1;
Šioje sintaksėje sąlyga LIMIT n-1, 1 grąžina 1 eilutę, kuri prasideda n eilute.
Pavyzdžiui, ši užklausa pateikia informaciją apie darbuotoją, kuris turi antras didžiausias pajamas:
SELECT emp_name, city, income FROM employees ORDER BY income LIMIT 1, 1;
Vykdydamas aukščiau pateiktą teiginį, jis pateiks tokią užklausą:
Reikia pažymėti, kad aukščiau pateikta užklausa veikia tik tada, kai jūsų lentelėje nėra dviejų darbuotojų, turinčių tam tikras pajamas. Tokiu atveju naudosime DENSE_RANK () kad gautumėte tikslesnį rezultatą.