16.15. Wie bekomme ich den letzten Datensatz aus der Tabelle?Antwort von Johannes FrömterIn 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. |
||
16.15. Wie bekomme ich den letzten Datensatz aus der Tabelle? http://www.php-faq.de/q/q-sql-letzter-eintrag.html |
||
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team |