Bestimmte Zeilennummer mit WHERE auslesen. Wie?

  • Hallo zusammen,

    ich brauche eine MySQL Abfrage, wo ich eine bestimmte Zeilennummer auslesen kann. Also mit WHERE nicht nach einem Inhalt selektieren, sondern eine bestimmte, sagen wir die 5-e Zeile auslesen. In etwa so:

    SELECT spalte_a FROM tabelle_xy WHERE zeilennummer = 5

    Gibt es so eine Möglichkeit? Bin in der MySQL Referenz nicht so ganz fündig geworden.

    Etwas an Hintergundinfo: ich will aus einer Tabelle eine Zufallszeile auslesen. Die Tabelle enthält momentan einige 100 Zeilen, wird auch in die 1000-e gehen. Ich will aber nicht die gesamte Tabelle in ein ARRAY auslesen, um dann aus dem einen Eintrag zufällig rauspicken.

    Gruß Eduard.

  • Hallo,

    Zitat

    Alternative:

    ~lass dir zuerst die Anzahl an Inhalten ausgeben.
    ~generier eine Zufallszahl die in dem Bereich liegt


    diese Schritte sind schon klar. Habe die aus Selbstverständlichkeit nicht erwähnt.

    Zitat

    ~selektiere diesen Eintrag


    Das war auch grade meine Frage.

    Zitat

    Fast komma
    Code:
    [...] LIMIT $zufall, 1 [...]


    Das man LIMIT mit zwei Angaben verwenden kann, habe ich nicht gewusst und ist auch grade das was ich brauche. Danke!

    Gruß Eduard

  • Ähm, mein Posting überlesen? Du musst nicht wissen, wieviele Datensätze in der DB stehen und du musst auch kein Limit zusammenbasteln. MySQL kann dir ohne den ganzen Quatsch einen zufällig ausgesuchten Datensatz geben! Wozu schreibt man hier ein kurze Lösung, wenn dann doch wieder versucht wird, den riesen Umweg zu gehen??? :(

  • Zitat von phpfan

    Ähm, mein Posting überlesen? Du musst nicht wissen, wieviele Datensätze in der DB stehen und du musst auch kein Limit zusammenbasteln. MySQL kann dir ohne den ganzen Quatsch einen zufällig ausgesuchten Datensatz geben! Wozu schreibt man hier ein kurze Lösung, wenn dann doch wieder versucht wird, den riesen Umweg zu gehen??? :(

    auf jeden fall die lösung von phpfan benutzen ... wozu der ganze andere code, wenn er nicht nötig ist?!

    select * from ????? where ????? ORDER BY rand() limit 0,1 ... schon hast du einen datensatz, der zufällig ausgewählt wird ...!

    das mit now() im rand() muss nicht sein, kann man aber benutzen ... ich lasse es aber meist weg.

  • Das now() habe ich eingebaut, da es einige ältere MySQL-Versionen gibt, die sonst nicht wirklich einen zufälligen Datensatz liefern. Bei mehreren Aufrufen hintereinander kommen da sonst sehr häufig die gleichen Werte raus. Ich kann im Moment nicht sagen, ab welcher Version das Problem behoben wurde.

  • Zitat

    Ähm, mein Posting überlesen? Du musst nicht wissen, wieviele Datensätze in der DB stehen und du musst auch kein Limit zusammenbasteln. MySQL kann dir ohne den ganzen Quatsch einen zufällig ausgesuchten Datensatz geben! Wozu schreibt man hier ein kurze Lösung, wenn dann doch wieder versucht wird, den riesen Umweg zu gehen???


    Habe ich nicht übersehen, nur noch nicht die Zeit gehabt zu antworten. Unter anderem war ich mich nicht ganz Sicher ob es funktioniert, da in der MySQL 4.0 Referenz dass recht märkwürdig beschrieben ist und testen kann ich erst heute abends. Mann könnte das so verstehen, dass ORDER BY RAND() nur in der früherer MySQL ver. 3.8 unterstützt wurde.

  • Zitat von marewa


    Habe ich nicht übersehen, nur noch nicht die Zeit gehabt zu antworten. Unter anderem war ich mich nicht ganz Sicher ob es funktioniert, da in der MySQL 4.0 Referenz dass recht märkwürdig beschrieben ist und testen kann ich erst heute abends. Mann könnte das so verstehen, dass ORDER BY RAND() nur in der früherer MySQL ver. 3.8 unterstützt wurde.

    das rand() klappt sicher, benutze es auf meinen seiten auch ständig! :)