logo

MySQL ierobežojums

MySQL Limit vaicājums tiek izmantots ierobežot rindu skaits atgriežas no rezultātu kopas, nevis atnešana visu komplektu MySQL datu bāzē. Ierobežojuma klauzula darbojas ar priekšrakstu SELECT, lai atgrieztu tikai norādīto rindu skaitu. Šis vaicājums pieņem tikai vienu vai divus argumentus, un to vērtībām jābūt nullei vai jebkuram pozitīvam veselam skaitlim.

Tas ir būtiski tādā gadījumā, ja tabulā ir tūkstošiem rindu vai vēlaties atgriezt tikai nesen ievietotos datus. Citiem vārdiem sakot, ja nevēlaties, lai visas vaicājuma rindas tiktu atgrieztas, izmantojiet MySQL Limit klauzulu ar SELECT priekšrakstu. Tas uzlabo vaicājuma veiktspēju un pat pārtrauc sistēmas avāriju, ja tabulā ir daudz datu.

Lai no tabulas iegūtu tikai norādītās rindas, MySQL izmanto LIMIT klauzula, savukārt SQL izmanto TOPS klauzulu, un Oracle izmanto ROWNUM klauzula ar ATLASĪT paziņojums, apgalvojums.

Sintakse

Tālāk ir norādīta Limit vaicājuma izmantošanas sintakse MySQL :

 SELECT column_list FROM table_name LIMIT offset, count; 

Iepriekš minētajā sintaksē mēs varam redzēt:

Column_list: Tas ir tās kolonnas nosaukums, kuru vēlaties atgriezt.

Tabulas_nosaukums: Tas ir tās tabulas nosaukums, kurā ir jūsu kolonnas nosaukums.

Nobīde: Tas norāda rindas numuru, no kuras vēlaties atgriezties. Rindas nobīde sākas ar 0, nevis 1.

Skaits: Tas norāda maksimālo rindu skaitu, kuras vēlaties atgriezt.

Sekojošais vizuālais attēlojums to izskaidro skaidrāk:

MySQL ierobežojums

PIEZĪME. Ja norādāt tikai vienu argumentu ar ierobežojuma klauzulu, MySQL pieņem to, lai noteiktu maksimālo rindu skaitu rezultātu kopas izvadei. Tādā gadījumā ierobežojuma klauzulas argumenti, nobīde un skaits ir līdzvērtīgs.

IEROBEŽOJUMA klauzula ar ORDER BY klauzulu

Lietotājam ir jāizmanto Limita klauzula kopā ar Pasūtījuma klauzulu. Neizmantojot punktu Order By, jūs saņemsiet rezultātu an nenoteikts pasūtījums . Tādā gadījumā ir grūti zināt, no kurām rindām vaicājums atgriež rezultātu. Tātad, tas ir labs ieradums izmantot Grupa pēc klauzulas ar ierobežojuma klauzulu rindu iegūšanai noteiktā secībā.

Lai iegūtu rezultātu unikālā secībā, var izmantot šādu sintaksi:

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

MySQL ierobežojumu piemēri

Izveidosim parauga tabulu datu bāzē, kurā ir šādi dati, un sapratīsim, kā Limit klauzula darbojas MySQL, izmantojot dažādus piemērus:

Tabula: darbinieki

MySQL ierobežojums

1. MySQL Limit, lai atgrieztu augstākās vai zemākās rindas

Šis apgalvojums tika izmantots, lai iegūtu piecus labākos jaunākos darbiniekus:

 SELECT * FROM employees ORDER BY emp_age LIMIT 5; 

Šis paziņojums vispirms sakārto darbinieka vecumu, izmantojot klauzulu Group By, un pēc tam ierobežojuma klauzula atgriež piecu labāko rezultātu. Pēc iepriekš minēto darbību izpildes mēs saņemsim šādu izvadi:

MySQL ierobežojums

2. MySQL Limit, lai iegūtu rindu diapazonu, izmantojot nobīdi

Dažreiz jūs vēlaties iegūt rezultātu starp vērtību diapazoniem. Piemēram, jums ir liels rindu skaits, lai parādītu datus par lietojumprogrammām, pēc tam sadaliet tos lapās, un katrā lapā tabulā ir ne vairāk kā 10 rindas. Tādā gadījumā varat izmantot šādu vaicājumu, lai iegūtu rindu diapazonu:

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

Šis priekšraksts atgriež rindas, sākot no 3. rindas un iet ne vairāk kā uz 7. rindu. Tas arī sakārto darbinieka ienākumus no augstākā līdz zemākajam. Izpildiet vaicājumu, un jūs saņemsiet šādu izvadi:

virkne uz jsonobject
MySQL ierobežojums

3. MySQL ierobežojums ar WHERE klauzulu

MySQL Limit var strādāt arī ar WHERE klauzulu. Vispirms tiek pārbaudīts tabulā norādītais nosacījums un tiek izveidotas rindas, kas atbilst nosacījumam.

Šis vaicājums atlasa pirmos piecus darbiniekus, kuru vecums pārsniedz 30 gadus. Šeit mēs izmantojām arī klauzulu “Pasūtīt pēc”, lai sakārtotu darbiniekus dilstošā secībā, izmantojot viņu ienākumus.

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

Pēc veiksmīgas iepriekš minētā paziņojuma izpildes mēs saņemsim šādu izvadi:

MySQL ierobežojums

4. MySQL LIMIT, lai iegūtu n-to augstāko vai zemāko vērtību

Dažreiz mēs vēlamies iegūt n-tās lielākās vai zemākās vērtības rindas. Tādā gadījumā mēs varam izmantot šo MySQL LIMIT klauzulu, lai iegūtu gaidīto rezultātu:

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

Šajā sintaksē klauzula LIMIT n-1, 1 atgriež 1 rindu, kas sākas ar rindu n.

Piemēram, šāds vaicājums atgriež informāciju par darbinieku, kuram ir otrie lielākie ienākumi:

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

Izpildot iepriekš minēto paziņojumu, tas sniegs šādu vaicājumu:

MySQL ierobežojums

Jāatzīmē, ka iepriekš minētais vaicājums darbojas tikai tad, ja jūsu tabulā nav iekļauti divi darbinieki, kuriem ir kādi ienākumi. Tādā gadījumā mēs izmantosim DENSE_RANK () lai iegūtu precīzāku rezultātu.