Gibt es einen Unterschied zwischen 'LIMIT 0, 1' und 'LIMIT 1'?

15

Ich bin kürzlich auf Beispielcodes gestoßen, die sich durch diese Notationen unterschieden.

SELECT * FROM table LIMIT 0, 1
SELECT * FROM table LIMIT 1

Das erste Argument sollte als Offset betrachtet werden, wenn ich mich nicht irre. Der Zweck dieser beiden Abfragen besteht darin, die Auswahl auf die erste Zeile von zu beschränken table

Gibt es negative Auswirkungen beim Weglassen des Offsets / wie ist es möglich, diesen überhaupt wegzulassen? Oder habe ich die Fragen falsch verstanden?

Gimu
quelle
3
Nein, du hast es richtig verstanden, sie sind gleichwertig. Dies ist auch: LIMIT 1 OFFSET 0. Aber Sie sollten wirklich ORDER BYin jede Abfrage, die hat LIMIT, aufnehmen, es sei denn, es gibt einen bestimmten Grund, dies nicht zu tun.
Ypercubeᵀᴹ

Antworten:

13

Wie die Dokumentation sagt:

Die  LIMIT Klausel kann verwendet werden, um die Anzahl der von der SELECT Anweisung zurückgegebenen Zeilen zu beschränken  . LIMIT akzeptiert ein oder zwei numerische Argumente, die beide nichtnegative Ganzzahlkonstanten sein müssen (außer bei Verwendung von vorbereiteten Anweisungen).

Mit zwei Argumenten gibt das erste Argument den Offset der ersten zurückzugebenden Zeile und das zweite die maximale Anzahl der zurückzugebenden Zeilen an. The offset of the initial row is 0 (not 1).

Die LIMITKlausel wird in der SELECTAnweisung verwendet, um die Anzahl der Zeilen in einer Ergebnismenge zu beschränken. Die LIMITKlausel akzeptiert ein oder zwei Argumente. Die Werte beider Argumente müssen Null oder positive Ganzzahlkonstanten sein.

Im Folgenden wird die LIMITKlauselsyntax mit zwei Argumenten veranschaulicht :

SELECT * FROM tbl
LIMIT offset, count;

Mal sehen, was Offset und Count in der LIMIT-Klausel bedeuten:

  • Das offsetgibt den Offset der ersten zurückzugebenden Zeile an. Der Versatz der ersten Zeile ist 0, nicht 1.
  • Der countgibt die maximale Anzahl der zurückzugebenden Zeilen an.

Wenn Sie LIMITmit einem Argument verwenden, wird dieses Argument verwendet, um die maximale Anzahl von Zeilen anzugeben, die ab dem Anfang der Ergebnismenge zurückgegeben werden sollen.

SELECT * FROM tbl LIMIT count;

Die obige Abfrage entspricht der folgenden Abfrage mit der LIMITKlausel, die zwei Argumente akzeptiert:

SELECT * FROM tbl LIMIT 0, count;

Die LIMIThäufig mit ORDER BYKlausel verwendete Klausel. Zuerst verwenden Sie die ORDER BYKlausel, um die Ergebnismenge nach bestimmten Kriterien zu sortieren, und dann verwenden Sie die LIMITKlausel, um die niedrigsten oder höchsten Werte zu ermitteln.

oNare
quelle