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
Editar:
Por cierto, en caso de que tengas curiosidad por saber por qué no funcionó tu consulta original, analicemos las partes:
- seleccione algunas cosas de
my_table
... - donde
user_2
=22 - y
timestamp
=(algún valor, dejémoslo a un lado por ahora) - límite 1
Ahora, volviendo a esa timestamp
value, proviene de su subconsulta:
SELECT MAX( timestamp ) FROM my_table
Tenga en cuenta que esta subconsulta no restringe ninguna fila en función de user_2
-- pregunta cuál es la marca de tiempo máxima en toda la tabla . Esa marca de tiempo máxima es la primera en su tabla anterior:(usuario_1 =23, usuario_2 =25, marca de tiempo =2012-08-10 22:00:00).
Entonces, volvamos a conectar eso a la consulta de nivel superior:
- seleccione algunas cosas de
my_table
... - donde usuario_2 =22
- y marca de tiempo =2012-08-10 22:00:00
- límite 1
... y puedes ver que no hay tal fila.