Frage zu mysql LIMIT



  • Wenn ich SELECT * FROM table LIMIT 10,20 benutze, werden dann exakt die Datensätze 10 bis 20 zurückgegeben und wäre es demnach möglich mit LIMIT 20,21 genau EINEN bestimmten Datensatz an Hand einer Nummer zu holen? Wenn nicht, wie wäre sowas möglich?



  • Kopie aus der MySQL Dokumentation
    http://dev.mysql.com/doc/mysql/de/select.html

    Die LIMIT-Klausel wird benutzt, um die Anzahl von Zeilen, die vom SELECT-Statement zurückgegeben werden, zu beschränken. LIMIT erwartet ein oder zwei numerische Argumente.

    Wenn zwei Argumente angegeben sind, legt das erste den Offset der ersten Zeile fest, die zurückgegeben wird, und das zweite gibt die maximale Anzahl von Zeilen an, die zurückgegeben werden. Der Offset der anfänglichen Zeile ist 0 (nicht 1):

    mysql> select * from tabelle LIMIT 5,10; # Zeilen 6 bis 15 zurückgeben

    Wenn ein Argument angegeben wird, stellt es die maximale Anzahl von Zeilen dar, die zurückgegeben werden:

    mysql> select * from tabelle LIMIT 5; # Die ersten 5 Zeilen zurückgeben

    Mit anderen Worten ist LIMIT n äquivalent zu LIMIT 0,n.



  • Hmm, genau *einen* Datensatz würd ich aber nicht mit LIMIT holen sondern:

    // Holt zB den Datensatz mit der ID 5
    SELECT * FROM table WHERE id=5;
    

    MfG SideWinder



  • Nein ist falsch.

    LIMIT 10,20 gibt 20 Datensätze (falls vorhanden) zurück beginnen beim 10 Im Resultset.

    Wenn du z.B. 100 Datensätze hast und im Resultset alle 100 drin sind dann bekommst du aus diesem eben die 20 beginnen beim 10.

    Der Rest wir "weggeworfen".

    LIMIT 0,10 beduete das gleiche wie LIMIT 10.



  • Also kurz
    LIMIT Zu startender Datensatz, Anzahl der Datensätze die gelesen werden sollen



  • Wichtig ist noch. IMMER AUS DER REIHENFOLGE DES RESULTSETS.

    Ordnest Du bereits die Datensetze z.B. mit ORDER BY dann eben aus diesen Daten und nicht so wie sie in der DB stehen.



  • ok, vielen dank, das war's 😉


Anmelden zum Antworten