(MySQL) Niedrigste ID und Details zugleich herauslesen?
muenzchen
- datenbank
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
Hallo,
meinst Du
SELECT * FROM table ORDER BY id LIMIT 1
?
damit wird der gesamte erste Datensatz ausgelesen.
Gruß Jan
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?
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
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
Danke für die Erklärung :)
MySQL ist wirklich genial. Ich könnte ohne nicht mehr leben :D