dclp FAQ

FAQ der Newsgroups de.comp.lang.php.*

 
  • Increase font size
  • Default font size
  • Decrease font size

Datenbanken

Wie bekomme ich den letzten Datensatz aus der Tabelle?

E-MailDruckenPDFLesezeichen anlegen: Du musst dich einloggen um ein Lesezeichen für diesen Beitrag anzulegen. Es wird deiner persönlichen Lesezeichenliste hinzugefügt.

In einer relationalen Datenbank gibt es keine Reihenfolge, also keine "letzte Zeile", kein "oben" oder "unten". Jedwede definierte Reihenfolge entsteht erst beim Selektieren von Datensätzen und der Sortierung nach irgendeinem Sortierkriterium.

Um also den "ersten" oder "letzten" Datensatz selektieren zu können, muss die Tabelle eine Spalte vom Typ TIMESTAMP haben, die manuell oder automatisch auf das Eintrags- bzw. Änderungsdatum gesetzt wird. Anhand dieser Spalte kann das Ergebnis sortiert werden (ASC sortiert aufsteigend, DESC absteigend). Mit LIMIT wird das Ergebnis dann auf den ersten (oder die ersten n) Datensätze beschränkt:

SELECT xy FROM tabelle
ORDER BY datum DESC
LIMIT 1

Wenn das DBMS Subselects zulässt (für MySQL ist dies ab Version 4.x geplant), kann man alternativ auch folgendes schreiben:

SELECT xy FROM tabelle
WHERE datum = (SELECT MAX(datum) FROM tabelle)

Damit diese Selects effektiv vonstatten gehen, muss auf die Timestamp-Spalte ein Index gelegt werden. Die Verwendung eines Primärschlüssel- statt Timestamp-Feldes ist nicht empfohlen.

Wie bekomme ich den letzten Datensatz aus der Tabelle?
http://www.php-faq.de/q-sql-letzter-eintrag.html
 

dclp FAQ


Login