MySQL - den letzten Datensatz aus einer Tabelle herauslesen
bert
- datenbank
0 Daniela Koller0 flasher0080 Daniela Koller0 bert0 flasher0080 Daniela Koller0 bert
Hallo,
ich würde gerne wissen, wie man den letzten Datensatz aus einer Tabelle herauslesen kann, ohne daß man einen bestimmten Wert angeben muß. Also wenn die Tabelle 5 Datensätze enthält, dann möchte ich herausbekommen, was im fünften drinsteht, allerdings kann ich nicht wissen, daß die Tabelle 5 Datensätze enthält. Es könnten genausogut auch 6 sein, dann wollte ich den Inhalt vom sechsten Datensatz.
SELECT * FROM Datensatz WHERE Datensatz = der letzte , so ungefähr sollte es als Abfrage aussehen.
Kann mir jemand weiterhelfen?
Grüße bert
Hi bert
Kann mir jemand weiterhelfen?
Warum sortierst du nicht einfach umgekehrt und nimmst dann
den ersten? order by desc limit 1,1 müsste das dann sein.
Wenn du nicht sortierst, dann gibt es sowieso keinen ersten
und letzten Datensatz weil die innerhalb einer relationalen
DB keine Reihenfolge haben.
Gruss Daniela
Hallo,
Hi
ich würde gerne wissen, wie man den letzten Datensatz aus einer Tabelle herauslesen kann, ohne daß man einen bestimmten Wert angeben muß. Also wenn die Tabelle 5 Datensätze enthält, dann möchte ich herausbekommen, was im fünften drinsteht, allerdings kann ich nicht wissen, daß die Tabelle 5 Datensätze enthält. Es könnten genausogut auch 6 sein, dann wollte ich den Inhalt vom sechsten Datensatz.
SELECT * FROM Datensatz WHERE Datensatz = der letzte , so ungefähr sollte es als Abfrage aussehen.
Kann mir jemand weiterhelfen?
Klar kann jemand ;-)
Also:
Also die einfachste Methode ist die Tabelle zu sortieren nach DESC oder ASC, je nachdem welchen Datensatz du haben willst (den ersten oder den letzten) und dann keine Schleife machen, und die Datenbank ausgeben, sondern nur einmal.
Ich weiss noch ca. 3 andere Wege, aber dieser ist der leichteste(oder doch nicht !? *g*).
gruß
der flasher008
Grüße bert
Hi flasher008
Also die einfachste Methode ist die Tabelle zu sortieren nach DESC oder ASC, je nachdem welchen Datensatz du haben willst (den ersten oder den letzten) und dann keine Schleife machen, und die Datenbank ausgeben, sondern nur einmal.
Ich weiss noch ca. 3 andere Wege, aber dieser ist der leichteste(oder doch nicht !? *g*).
Nicht wirklich der leichteste Weg und auch bei weitem der Unperformanteste.
Du überträgst damit n Haufen völlig unnötige Resultate von der Datenbank
an das Programm.
Bei der Lösung mit Limit muss zwar auch alles zuerst sortiert werden
Datenbankintern aber übermittelt wird nur noch der einzelne Datensatz.
Gruss Daniela
HI Daniela,
Bei der Lösung mit Limit muss zwar auch alles zuerst sortiert werden
immer?
Wenn auf dem Sortierkriterium ein sortierter Index liegt, dann wird das
RDBMS diesen sinnvollerweise traversieren und einfach nur den einen
gesuchten Datensatz zurückliefern. Das ist dann genauso performant wie
der Zugriff auf einen beliebigen einzelnen Datensatz der Tabelle über
diesen Index.
Viele Grüße
Michael
Hallo,
Also die einfachste Methode ist die Tabelle zu sortieren nach DESC oder ASC, je nachdem welchen Datensatz du haben willst (den ersten oder den letzten) und dann keine Schleife machen, und die Datenbank ausgeben, sondern nur einmal.
Ich weiss noch ca. 3 andere Wege, aber dieser ist der leichteste(oder doch nicht !? *g*).
gruß
der flasher008
Grüße bert
Hallo flasher008,
Wie sehen, denn Deine drei anderen Wege aus? Es ist so, daß ich über ein Formular immer wieder neue Einträge in die Datenbank erhalte. Die Daten sollen dann per mail verschickt werden. Leider geht es nicht anders, als sie aus der Datenbank zu holen. Dafür benötige ich immer den aktuellsten Eintrag. Ich bin mir nicht so sicher, ob da das Sortieren am besten für geeignet ist.
Grüße bert
Hallo,
Also die einfachste Methode ist die Tabelle zu sortieren nach DESC oder ASC, je nachdem welchen Datensatz du haben willst (den ersten oder den letzten) und dann keine Schleife machen, und die Datenbank ausgeben, sondern nur einmal.
Ich weiss noch ca. 3 andere Wege, aber dieser ist der leichteste(oder doch nicht !? *g*).
gruß
der flasher008
Grüße bert
Hallo flasher008,
Wie sehen, denn Deine drei anderen Wege aus? Es ist so, daß ich über ein Formular immer wieder neue Einträge in die Datenbank erhalte. Die Daten sollen dann per mail verschickt werden. Leider geht es nicht anders, als sie aus der Datenbank zu holen. Dafür benötige ich immer den aktuellsten Eintrag. Ich bin mir nicht so sicher, ob da das Sortieren am besten für geeignet ist.
Grüße bert
@Daniela: ich habe nie gesagt, dass der der Performance Hammer ist ;-)
@bert: wenn du immer den aktuellsten Datensatz haben willst, dann mache es doch über AffectedRow.
Hi flasher008
@Daniela: ich habe nie gesagt, dass der der Performance Hammer ist ;-)
Ich sagte auch nur, wie man das sehr einfach optimieren kann, ist
genau wie deine Lösung nur halt wird nur der erste Datensatz aus dem
ResultSet weitergeschickt. Deswegen an order by blub desc einfach noch ein
limit 1,1 (vom ersten an, ein Datensatz) anhängen.
@bert: wenn du immer den aktuellsten Datensatz haben willst, dann mache es doch über AffectedRow.
Das wäre aber nur direkt wenn einer eingefügt wurde od geändert wurde.
Gruss Daniela
Hi flasher008
@Daniela: ich habe nie gesagt, dass der der Performance Hammer ist ;-)
Ich sagte auch nur, wie man das sehr einfach optimieren kann, ist
genau wie deine Lösung nur halt wird nur der erste Datensatz aus dem
ResultSet weitergeschickt. Deswegen an order by blub desc einfach noch ein
limit 1,1 (vom ersten an, ein Datensatz) anhängen.
@bert: wenn du immer den aktuellsten Datensatz haben willst, dann mache es doch über AffectedRow.
Das wäre aber nur direkt wenn einer eingefügt wurde od geändert wurde.
Gruss Daniela
Hallo ihr beiden,
vielen Dank für Eure Ideen. Werde versuchen Sie umzusetzen und hoffe damit weiterzukommen.
Grüße bert