Welche Zeilen werden bei Verwendung von LIMIT mit OFFSET in MySQL zurückgegeben?


140

In der folgenden Abfrage:

SELECT column 
FROM table
LIMIT 18 OFFSET 8

Wie viele Ergebnisse erhalten wir als Ausgabe und von wo nach wo?


Die Bestellung muss zuerst LIMIT und dann OFFSET sein. Wenn nicht, wird ein Fehler ausgegeben.
Mouser

Antworten:


189

Es werden 18 Ergebnisse zurückgegeben, beginnend mit Datensatz Nr. 9 und endend mit Datensatz Nr. 26.

Beginnen Sie mit dem Lesen der Abfrage von offset. Zuerst versetzen Sie um 8, was bedeutet, dass Sie die ersten 8 Ergebnisse der Abfrage überspringen. Dann begrenzen Sie auf 18. Dies bedeutet, dass Sie die Datensätze 9, 10, 11, 12, 13, 14, 15, 16 ... 24, 25, 26 berücksichtigen, was insgesamt 18 Datensätze entspricht.

Überprüfen Sie dies heraus.

Und auch die offizielle Dokumentation .


Sie sind richtig, gibt es einen Unterschied s / w Limit 8,18 und Limit 18 Offset 8
Arun Killu

26
Nein, es ist das gleiche. LIMIT 8, 18ist nur eine Abkürzung :)
Mosty Mostacho

1
Beste Antwort, da ich auch verwirrt war, dachte ich, dass es die Daten zwischen den beiden Ziffern zurückgibt, aber jetzt ist es klar :)
MR_AMDEV

47

OFFSET ist nichts anderes als ein Schlüsselwort, das den Startcursor in der Tabelle angibt

SELECT column FROM table LIMIT 18 OFFSET 8 -- fetch 18 records, begin with record 9 (OFFSET 8)

Sie würden das gleiche Ergebnisformular erhalten

SELECT column FROM table LIMIT 8, 18

visuelle Darstellung ( Rist ein Datensatz in der Tabelle in einer bestimmten Reihenfolge)

 OFFSET        LIMIT          rest of the table
 __||__   _______||_______   __||__
/      \ /                \ /
RRRRRRRR RRRRRRRRRRRRRRRRRR RRRR...
         \________________/
                 ||
             your result

3

Sie erhalten eine Ausgabe von column9 bis 26, wie Sie OFFSETals 8 erwähnt haben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.