Mysql - neuesten datensatz auswählen
Florian Schaf
- datenbank
0 Rouven0 Vinzenz Mai0 Rouven
0 dedlfix0 Vinzenz Mai0 Tom
hallo
zu aller erst möchte ich sagen das das ein wirklich tolles forum ist. respekt! aber nun zu meiner frage: wie wähle ich den datensatz mit der höchsten id aus?
ich hoffe ihr könnt mir helfen
mfg
flo
Hi,
*args*, also erstmal als Einwurf: Wenn du mit ID einen Autoincrement meinst: Lass es sein, das ist ein schlechter Weg. Die ID dient keines Falles der Sortierung sondern lediglich der eindeutigen Identifizierung des Satzes. Sie kann Lücken aufweisen, es ist nicht auf ewig gewährleistet, dass sie in aufsteigender Reihenfolge vergeben wird.
Ansonsten: Sortiere mittels ORDER BY ... DESC die Datensätze und begrenze mit LIMIT 1 die Ergebnisse (optional) - vgl. MySQL-Manual.
MfG
Rouven
Hallo Rouven,
ich zolle Deiner Schnelligkeit Respekt :-)
[...] Die ID dient keines Falles der Sortierung sondern lediglich der eindeutigen Identifizierung des Satzes.
Diesen Hinweis hat Florian gleich in dreifacher Ausfertigung bekommen; ich hoffe, er verwechselt uns nicht mit einer Behörde ;-)
Freundliche Grüße
Vinzenz
Hi Vinzenz,
Diesen Hinweis hat Florian gleich in dreifacher Ausfertigung bekommen; ich hoffe, er verwechselt uns nicht mit einer Behörde ;-)
nein, ich glaube die Gefahr besteht nicht, da er auch mehrfach einen Link auf das selbe Manual erhalten hat - wären wir eine Behörde hätten wir ihn alle unterschiedliche Formulare in unterschiedlichen Stockwerken ausfüllen lassen :-)
MfG
Rouven
echo $begrüßung;
wie wähle ich den datensatz mit der höchsten id aus?
Der Datensatz mit der höchsten ID ist nicht zwangsläufig der neueste. Verwende für solche zeitabhängigen Kriterien ein passendes Datum/Zeit-Feld, vielleicht TIMESTAMP. (Beachte die unterschiedlichen Wertebereiche der Datums- und Zeit-Felder.)
Ansonsten sortiere die Ausgabe absteigend (ORDER BY .. DESC) und limitiere die Ergebnismenge auf einen Datensatz (LIMIT 1).
echo "$verabschiedung $name";
Hallo Florian,
zu aller erst möchte ich sagen das das ein wirklich tolles forum ist.
Brei um den Bart schmier.
respekt! aber nun zu meiner frage: wie wähle ich den datensatz mit der höchsten id aus?
Du verwendest MySQL:
Wähle Deine Spalten aus,
Sortiere absteigend nach der ID (ORDER BY id DESC),
Limitiere Deine Ergebnismenge auf einen Datensatz (LIMIT 1).
Du findest alles im Handbuch im Kapitel SELECT-Syntax.
Ich gehe davon aus, dass jede ID nur einmal vorkommt. Da der Funktionsumfang von MySQL von Version zu Version sehr unterschiedlich sein kann, solltest Du Dir es angewöhnen bei Fragen zu MySQL die von Dir verwendete Version gleich mit anzugeben.
Freundliche Grüße
Vinzenz
Ach übrigens: Eine ID sollte nur eine ID sein und keine weitere Bedeutung tragen. Wenn Du ein Datensatzalter ermitteln willst, so füge Deiner Tabelle eine Spalte vom Typ Timestamp hinzu und lass diese Spalte beim Hinzufügen eines Datensatzes füllen.
Hello,
zu aller erst möchte ich sagen das das ein wirklich tolles forum ist.
ganz toll giftig - manchmal ;-)
Betreff und Frage sind eigentlich zwei Fragen und eine zu dementierende implizite Aussage.
Rouven hat ja schon darafu hingewiesen, dass MySQL Autoincrement angeblich nicht clean ist.
Wenn Du den zuletzt eingefügten Datensatz also identifizieren willst, musst Du leider einen zusätzlichen Unique Key einfügen, der dann z.B. direkt von der Zeit abhängig ist. Dabei wird aber ein "Timestamp" mit seiner Auflösung von Sekunden nicht ausreichen. MySQL ist nämlich durchaus in der Lage, in einer Sekunde 10 Datensätzue und mehr einzufügen.
Solange die Sache mit dem Autoincrement nicht geklärt ist, bleibt MySQL für mich eine Kindersoftware.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom