Möchte man den letzten Wert in einer Datenbanktabelle anzeigen, gibt es mehrere Möglichkeiten. Es ist auch abhängig, für welchen Zweck man diesen Wert benötigt und was man als Indikator verwendet.
In den Beispielen hat die Tabelle eine Spalte „ID“ als Autoinkrement mit (Integer)-Zahl.
ID des aktuell geschriebenen Eintrags auslesen.
Dazu kann man den Befehl LAST_INSERT_ID() verwenden. Allerdings hat dieser Befehl eine Besonderheit: Es wird die zuletzt geschriebene ID der aktuellen Verbindung ausgegeben.
So wird ein
1 |
SELECT LAST_INSERT_ID() |
keine sinnvolle Ausgabe erzeugen, da in der aktuellen Sitzung keine ID generiert wurde.
Sinnvoll ist diese Abfrage in Kombination mit einem INSERT-Befehl.
1 |
INSERT INTO Tabellenname (Spalte1) VALUES (100) ; SELECT LAST_INSERT_ID() |
Dieser Befehl gibt die verwendete ID des aktuell geschriebenen Eintrages zurück. Das kann wichtig sein um seinen aktuellen Datensatz wieder aufrufen zu können.
Den letzten Eintrag auslesen.
Um den letzten Eintrag einer Tabelle auszulesen gibt es mehrere Möglichkeiten.
LIMIT
Man kann die Ausgabe mit LIMIT begrenzen. Die Angabe LIMIT 1 gibt den ersten Datensatz, der gelesen wird, aus.
(Korrekter weise sollte man LIMIT 0,1 schreiben. Die erste Zahl gibt den Startwert an [0 = erste Zeile], die zweite Zahl gibt die Anzahl der zurückzugebenen Werte an [1 = eine Zeile]
Da die Standardausgabe bei MySQL aufsteigend (ASC) ist, würde nicht der letzte, sondern der erste Eintrag ausgegeben. Somit muss man die Ausgabe umdrehen (DESC). Als Sortierkriterium wird vermutlich die ID (Autoinkrement) die günstigste Entscheidung sein (zumindest bei diesem Beispiel).
1 |
SELECT * FROM Tabellenname ORDER BY ID DESC LIMIT 1 |
MAX(Primärkey)
Eine andere Möglichkeit ist es den höchsten Autoinkrementwert festzustellen.
In diesem Beispiel beinhaltet die Spalte „ID“ den Autoinkrement.
1 |
SELECT MAX(ID) FROM Tabellenname |
Diese Ausgabe könnte man mit dem Select-Befehl für die Datenabfrage verketten
1 |
SELECT * FROM TABELLENNAME WHERE ID = (SELECT MAX(ID) FROM TABELLENNAME) |