MySQL Limit-spørring brukes til begrense antall rader returnerer fra resultatsettet, i stedet for henter hele settet i MySQL-databasen. Limit-leddet fungerer med SELECT-setningen for kun å returnere det angitte antallet rader. Denne spørringen aksepterer bare ett eller to argumenter, og verdiene deres skal være null eller et positivt heltall.
Det er viktig i et slikt tilfelle når tabellen inneholder tusenvis av rader, eller du vil returnere kun de nylig innsatte dataene. Med andre ord, hvis du ikke er interessert i å få alle radene returnert fra spørringen, bruk MySQL Limit-klausulen med SELECT-setningen. Det forbedrer ytelsen til spørringen og slutter til og med å ha krasjet systemet når tabellen inneholder et stort antall data.
For å få bare de spesifiserte radene fra tabellen, bruker MySQL GRENSE klausul, mens SQL bruker TOPP klausulen, og Oracle bruker ROWNUM klausul med PLUKKE UT uttalelse.
Syntaks
Følgende er syntaksen for å bruke Limit-søk i MySQL :
SELECT column_list FROM table_name LIMIT offset, count;
I syntaksen ovenfor kan vi se:
Column_list: Det er navnet på kolonnen du vil returnere.
Tabellnavn: Det er navnet på tabellen som inneholder kolonnenavnet ditt.
Offset: Den spesifiserer nummeret på en rad du vil returnere fra. Forskyvningen av raden starter fra 0, ikke 1.
Telle: Den spesifiserer maksimalt antall rader du vil returnere.
Følgende visuelle representasjon forklarer det tydeligere:
MERK: Hvis du spesifiserer bare ett argument med Limit-leddet, antar MySQL dette for å bestemme maksimalt antall rader for å returnere utdata fra resultatsettet. I så fall er Limit-klausulargumenter, offset og tellingen ekvivalent.
LIMIT-klausul med ORDER BY-klausul
Brukeren må bruke Limit-klausulen med Order By-klausulen. Uten å bruke Order By-klausul får du resultatet i en uspesifisert rekkefølge . I så fall er det vanskelig å vite at spørringen returnerer resultatet fra hvilke rader. Så det er en god vane å bruke Grupper etter klausul med en Limit-klausul for å få radene i en bestemt rekkefølge.
Følgende syntaks kan brukes for å få resultatet i en unik rekkefølge:
SELECT column_list FROM table_name GROUP BY order_expression LIMIT offset, count;
Eksempler på MySQL Limit
La oss lage en eksempeltabell i databasen som inneholder følgende data og forstå hvordan Limit-klausulen fungerer i MySQL ved å bruke forskjellige eksempler:
Tabell: ansatte
1. MySQL Limit for å returnere høyeste eller laveste rader
Følgende uttalelse pleide å få de fem beste yngre ansatte:
SELECT * FROM employees ORDER BY emp_age LIMIT 5;
Denne setningen sorterer først ansattes alder ved å bruke Group By-klausul, og deretter gir Limit-klausulen topp-fem-resultatet. Etter å ha utført trinnene ovenfor, vil vi få følgende utgang:
2. MySQL Limit for å få en rekke rader ved bruk av offset
Noen ganger ønsker du å få et resultat mellom verdiområdene. For eksempel har du et stort antall rader for å vise data på applikasjoner, deretter deler du det inn i sider, og hver side inneholder maksimalt 10 rader i en tabell. I så fall kan du bruke følgende spørring for å få en rekke rader:
SELECT emp_id, emp_name, income FROM employees ORDER BY income DESC LIMIT 3,7;
Denne setningen returnerer radene som starter fra rad nummer 3 og går til maksimalt 7. rad. Den sorterer også inntekten til den ansatte i høyeste til laveste rekkefølge. Utfør spørringen, og du vil få følgende utdata:
hvordan oppgraderer jeg java
3. MySQL-grense med WHERE-klausul
MySQL Limit kan også arbeides med WHERE-klausulen. Den sjekker først den angitte tilstanden i tabellen og produserer radene som samsvarte med betingelsen.
Denne spørringen velger de første fem ansatte som har en alder over 30 år. Her brukte vi også Ordre etter-klausulen for å sortere de ansatte i synkende rekkefølge ved å bruke inntektene deres.
SELECT emp_name, emp_age, income FROM employees WHERE emp_age>30 ORDER BY income DESC LIMIT 5;
Etter vellykket utførelse av setningen ovenfor, vil vi få følgende utgang:
4. MySQL LIMIT for å få den n'te høyeste eller laveste verdien
Noen ganger ønsker vi å få radene med n'te høyeste eller laveste verdi. I så fall kan vi bruke følgende MySQL LIMIT-klausul for å få det forventede resultatet:
SELECT column_list FROM table_name ORDER BY expression LIMIT n-1, 1;
I denne syntaksen returnerer LIMIT n-1, 1-leddet 1 rad som starter på rad n.
Følgende spørring returnerer for eksempel ansattinformasjonen som har den nest høyeste inntekten:
SELECT emp_name, city, income FROM employees ORDER BY income LIMIT 1, 1;
Ved å utføre setningen ovenfor, vil den gi følgende spørring:
Det skal bemerkes at søket ovenfor bare fungerer når tabellen din ikke inneholder to ansatte som har en viss inntekt. I så fall vil vi bruke DENSE_RANK () for å få et mer nøyaktig resultat.