muenzchen: (MySQL) Niedrigste ID und Details zugleich herauslesen?

Hallo!

Ich habe echt schon alles probiert, was mir eingefallen ist, aber es klappt nicht.

Ist es möglich aus einer Tabelle mit unterschiedlichen IDs mit zusätzlichen Infos, die niedrigste ID und dazugehörige Infos in einer Abfrage auszulesen?

Ich habe es bis jetzt nur so geschafft, zuerst die niedrigste ID herauszufinden und dann nocheinmal die Daten, die bei dieser ID stehen, abzufragen.

Falls ja, wie geht das?

MfG, muenzchen

  1. Hallo,

    meinst Du

    SELECT * FROM table ORDER BY id LIMIT 1

    ?

    damit wird der gesamte erste Datensatz ausgelesen.

    Gruß Jan

    1. Hallo,

      meinst Du

      SELECT * FROM table ORDER BY id LIMIT 1

      ?

      damit wird der gesamte erste Datensatz ausgelesen.

      Gruß Jan

      Vielen Dank, auf diese genial einfache Lösung bin ich natürlich nicht gekommen :D

      Nur eine einzige Frage habe ich dazu noch. Ist das bei vielen Datensätzen nicht ziemlich schwer für die Datenbank, da ja eigentlich alle Datensätze ausgelesen oder zumindest geordnet werden müssen? Das ist doch eigentlich mehr Aufwand als nur einen einzigen Datensatz auszulesen (falls das eben geht), oder?

      1. Datenbanken sind normalerweise dazu da Millionen von Datensätzen zu verwalten und dabei noch gelangweilt zu tun. Sie wird also Deine Versuche überleben. :o)

        Sieh aber zu das die Querys immer möglichst sauber sind, so dass nur die benötigten Daten genutzt werden. Möchtest Du also fünf Zellen eines Datensatzes haben, so ist es sicherlich nicht nötig den * zu nehmen, wenn der Datensatz aus 100 Zellen besteht.

        Wenn Du mehr lernen willst:

        http://www.mysql.com/doc/en/SELECT.html

        Gruß Jan

      2. Halihallo muenzchen

        Nur eine einzige Frage habe ich dazu noch. Ist das bei vielen Datensätzen nicht ziemlich schwer für die Datenbank, da ja eigentlich alle Datensätze ausgelesen oder zumindest geordnet werden müssen? Das ist doch eigentlich mehr Aufwand als nur einen einzigen Datensatz auszulesen (falls das eben geht), oder?

        Der Gedanke ist richtig, nur lautet die Antwort dennoch nein. MySQL verhält sich bei
        ORDER BY in Verbindung mit LIMIT so, dass immer nur solange sortiert wird, bis die Anzahl
        zu selektierenden Datensätzen erreicht ist (in deinem Fall besteht das Sortieren also
        darin, die grösste id zu finden und diesen Eintrag zurückzugeben). Zudem lässt mich der
        Name "id" darauf schliessen, dass du diesen als PRIMARY KEY definiert hast, PRIMARY KEYs
        werden implizit indiziert (UNIQUE-Index) und durch diesen Index ist es der Datenbank
        sehr schnell möglich, die maximale id zu finden. Dein Query wird auch bei einer Tabelle
        mit 1'000'000'000 Einträgen noch sehr, sehr performant sein.
        Anders aber, wenn du kein LIMIT-Clause hast und/oder ein Feld sortierst, welches nicht
        indiziert ist; dann kriegst du den Sortier-Aufwand bei der zuvorgenannten Tabelle schon
        zu spüren.

        Viele Grüsse

        Philipp

        1. Danke für die Erklärung :)

          MySQL ist wirklich genial. Ich könnte ohne nicht mehr leben :D