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?
LIMIT 1 OFFSET 0
. Aber Sie sollten wirklichORDER BY
in jede Abfrage, die hatLIMIT
, aufnehmen, es sei denn, es gibt einen bestimmten Grund, dies nicht zu tun.Antworten:
Wie die Dokumentation sagt:
Die
LIMIT
Klausel wird in derSELECT
Anweisung verwendet, um die Anzahl der Zeilen in einer Ergebnismenge zu beschränken. DieLIMIT
Klausel akzeptiert ein oder zwei Argumente. Die Werte beider Argumente müssen Null oder positive Ganzzahlkonstanten sein.Im Folgenden wird die
LIMIT
Klauselsyntax mit zwei Argumenten veranschaulicht :Mal sehen, was Offset und Count in der LIMIT-Klausel bedeuten:
offset
gibt den Offset der ersten zurückzugebenden Zeile an. Der Versatz der ersten Zeile ist 0, nicht 1.count
gibt die maximale Anzahl der zurückzugebenden Zeilen an.Wenn Sie
LIMIT
mit 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
LIMIT
Klausel, die zwei Argumente akzeptiert:SELECT * FROM tbl
LIMIT 0, count;
Die
LIMIT
häufig mitORDER BY
Klausel verwendete Klausel. Zuerst verwenden Sie dieORDER BY
Klausel, um die Ergebnismenge nach bestimmten Kriterien zu sortieren, und dann verwenden Sie dieLIMIT
Klausel, um die niedrigsten oder höchsten Werte zu ermitteln.quelle