SELECT * FROM my_table -- standard stuff
WHERE user_2 = 22 -- predicate
ORDER BY timestamp DESC -- this means highest number (most recent) first
LIMIT 1; -- just want the first row
Bearbeiten:
Übrigens, falls Sie neugierig sind, warum Ihre ursprüngliche Abfrage nicht funktioniert hat, lassen Sie uns die Teile aufschlüsseln:
- Wählen Sie etwas aus
my_table
aus ... - wobei
user_2
=22 - und
timestamp
=(irgendein Wert, legen wir ihn erstmal beiseite) - Grenze 1
Kommen wir nun zurück zu diesem timestamp
Wert, er stammt aus Ihrer Unterabfrage:
SELECT MAX( timestamp ) FROM my_table
Beachten Sie, dass diese Unterabfrage keine Zeilen basierend auf user_2
einschränkt -- es fragt nach dem maximalen Zeitstempel in der gesamten Tabelle . Dieser maximale Zeitstempel ist der erste in Ihrer obigen Tabelle:(user_1 =23, user_2 =25, timestamp =2012-08-10 22:00:00).
Schließen wir das also wieder an die Abfrage der obersten Ebene an:
- Wählen Sie etwas aus
my_table
aus ... - wobei user_2 =22
- und Zeitstempel =2012-08-10 22:00:00
- Grenze 1
... und Sie können sehen, dass es eine solche Zeile nicht gibt.