MySQL Limit-fråga är van vid begränsa antalet rader returnerar från resultatuppsättningen, snarare än hämtning hela uppsättningen i MySQL-databasen. Limit-satsen fungerar med SELECT-satsen för att endast returnera det angivna antalet rader. Den här frågan accepterar bara ett eller två argument och deras värden ska vara noll eller ett positivt heltal.
Det är viktigt i ett sådant fall när tabellen innehåller tusentals rader, eller om du bara vill returnera de nyligen infogade data. Med andra ord, om du inte är intresserad av att få alla rader returnerade från frågan, använd MySQL Limit-satsen med SELECT-satsen. Det förbättrar prestandan för frågan och slutar till och med att ha kraschat systemet när tabellen innehåller ett stort antal data.
För att bara få de angivna raderna från tabellen använder MySQL BEGRÄNSA sats, medan SQL använder TOPP klausul, och Oracle använder ROWNUM klausul med VÄLJ påstående.
Syntax
Följande är syntaxen för att använda Limit-fråga i MySQL :
SELECT column_list FROM table_name LIMIT offset, count;
I ovanstående syntax kan vi se:
Column_list: Det är namnet på kolumnen som du vill returnera.
Tabellnamn: Det är namnet på tabellen som innehåller ditt kolumnnamn.
Offset: Den anger numret på en rad som du vill återvända från. Förskjutningen av raden börjar från 0, inte 1.
Räkna: Den anger det maximala antalet rader du vill returnera.
Följande visuella representation förklarar det tydligare:
OBS: Om du bara anger ett argument med Limit-satsen, antar MySQL detta för att bestämma det maximala antalet rader för att returnera utdata från resultatuppsättningen. I så fall är Limit-satsargument, offset, och antalet likvärdiga.
LIMIT-klausul med ORDER BY-klausul
Användaren måste använda Limit-klausulen med Order By-klausulen. Utan att använda Order By-klausul får du resultatet i en ospecificerad ordning . I så fall är det svårt att veta att frågan returnerar resultatet från vilka rader. Så det är en bra vana att använda Gruppera efter klausul med en Limit-sats för att få raderna i en specifik ordning.
Följande syntax kan användas för att få resultatet i en unik ordning:
SELECT column_list FROM table_name GROUP BY order_expression LIMIT offset, count;
MySQL Limit Exempel
Låt oss skapa en exempeltabell i databasen som innehåller följande data och förstå hur Limit-satsen fungerar i MySQL med hjälp av olika exempel:
Tabell: anställda
1. MySQL Limit för att returnera högsta eller lägsta rader
Följande uttalande användes för att få de fem bästa yngre anställda:
SELECT * FROM employees ORDER BY emp_age LIMIT 5;
Detta uttalande sorterar först anställds ålder med hjälp av Group By-sats, och sedan returnerar Limit-satsen de fem bästa resultaten. Efter att ha utfört stegen ovan kommer vi att få följande utdata:
2. MySQL Limit för att få en rad rader med offset
Ibland vill man få ett resultat mellan värdeintervallen. Till exempel har du ett stort antal rader för att visa data om applikationer, sedan dela upp det i sidor, och varje sida innehåller maximalt 10 rader i en tabell. I så fall kan du använda följande fråga för att få ett radintervall:
SELECT emp_id, emp_name, income FROM employees ORDER BY income DESC LIMIT 3,7;
Detta uttalande returnerar raderna från rad nummer 3 och går till maximalt 7:e raderna. Den sorterar också den anställdes inkomst i högsta till lägsta ordning. Kör frågan så får du följande utdata:
all caps genväg excel
3. MySQL-gräns med WHERE-klausul
MySQL Limit kan också arbetas med WHERE-satsen. Den kontrollerar först det angivna villkoret i tabellen och producerar de rader som matchade villkoret.
Den här frågan väljer ut de första fem anställda vars ålder är äldre än 30. Här använde vi också Ordningsefter-satsen för att sortera de anställda i fallande ordning med hjälp av deras inkomst.
SELECT emp_name, emp_age, income FROM employees WHERE emp_age>30 ORDER BY income DESC LIMIT 5;
Efter framgångsrik exekvering av ovanstående uttalande kommer vi att få följande utdata:
4. MySQL LIMIT för att få det n:te högsta eller lägsta värdet
Ibland vill vi få raderna med n:te högsta eller lägsta värdet. I så fall kan vi använda följande MySQL LIMIT-klausul för att få det förväntade resultatet:
SELECT column_list FROM table_name ORDER BY expression LIMIT n-1, 1;
I denna syntax returnerar LIMIT n-1, 1-satsen 1 rad som börjar på raden n.
Till exempel returnerar följande fråga den anställningsinformation som har den näst högsta inkomsten:
SELECT emp_name, city, income FROM employees ORDER BY income LIMIT 1, 1;
Om du kör ovanstående uttalande kommer det att ge följande fråga:
Det bör noteras att ovanstående fråga bara fungerar när din tabell inte innehåller två anställda som har viss inkomst. I så fall kommer vi att använda DENSE_RANK () för att få ett mer exakt resultat.