Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So begrenzen Sie Zeilen in einem MySQL-Ergebnissatz

Problem:

Sie möchten die Anzahl der Zeilen in einer Ergebnismenge in MySQL begrenzen.

Beispiel:

Unsere Datenbank hat eine Tabelle namens student mit Daten in den Spalten id , first_name , last_name , und age .

id Vorname Nachname Alter
1 Steven Watson 25
2 Lisa Anderson 19
3 Alice Müller 19
4 Maria Braun 25
5 Lucy Watson 25
6 Michael Jackson 22

Lassen Sie uns die vollständigen Namen und das Alter der Schüler auswählen, aber die zurückgegebenen Zeilen auf drei beschränken.

Lösung:

SELECT first_name, last_name, age
FROM student
LIMIT 3;

Hier ist das Ergebnis der Abfrage:

id Vorname Nachname Alter
1 Steven Watson 25
2 Lisa Anderson 19
3 Alice Müller 19

Diskussion:

Die LIMIT-Klausel begrenzt die Anzahl der Zeilen in der Ergebnismenge. Es wird in der SELECT-Anweisung verwendet, normalerweise am Ende der Anweisung. (Sogar ORDER BY sollte vor LIMIT aufgeführt werden.)

Das einzige erforderliche Argument ist die Anzahl der anzuzeigenden Zeilen. In unserem Beispiel hat LIMIT 3 eine Ergebnismenge mit drei Zeilen erzeugt. Sofern Sie mit dem OFFSET-Argument nichts anderes angeben, gibt diese Funktion immer das erste n zurück Zeilen, die die Abfrageanforderungen erfüllen.

Das optionale OFFSET-Argument von LIMIT wird vor dem Argument platziert, das die Anzahl der zurückgegebenen Zeilen angibt. Es gibt die Position der ersten Zeile an, die von LIMIT zurückgegeben wird (d. h. ‚0‘ ist die erste Zeile, 1 ist die zweite Zeile usw.). Der Offset und die Anzahl der Zeilen werden durch ein Komma getrennt.

Die Abfrage gibt dieselben Datensätze wie die vorherige Abfrage zurück, da der Offset Null ist. (Null ist der Standard-Offsetwert.)

SELECT first_name, last_name, age
FROM student
LIMIT 0, 3;

In diesen Abfragen sind die Ergebniszeilen unsortiert. Wenn Sie drei Zeilen aus einer sortierten Ergebnismenge auswählen möchten, verwenden Sie ORDER BY:

SELECT first_name, last_name, age
FROM student
ORDER BY age DESC, last_name, first_name
LIMIT 1,3;

Hier ordnen wir die Zeilen zuerst nach Alter (absteigend), dann Nachname, dann Vorname. Wir verwenden den Offset-Wert, um mit der zweiten zurückgegebenen Zeile zu beginnen und die Ergebnisse auf drei Zeilen zu begrenzen:

Vorname Nachname Alter
Lucy Watson 25
Steven Watson 25
Michael Jackson 22

Diese Abfrage sortiert zuerst Zeilen nach der Altersspalte in absteigender Reihenfolge. Dann wird nach last_name sortiert und first_name in aufsteigender Reihenfolge. Wenn Sie sich die Tabelle ansehen, sehen Sie, dass die ältesten Schüler (Steven, Lucy, Mary) 25 Jahre alt sind. Mary wird jedoch weggelassen, weil sie die erste Reihe ist und der Offset 1 ist (d. h. wir beginnen mit der zweiten Reihe). Lucy steht jetzt an erster Stelle, weil ihr Vorname vor dem von Steven steht. (Steven und Lucy haben denselben Nachnamen, daher wird ihre Reihenfolge nach dem Vornamen bestimmt.) Michael ist 22, was ihn zum zweitältesten Schüler und letzten der drei zurückgegebenen Reihen macht.