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:
A propósito, caso você esteja curioso por que sua consulta original não funcionou, vamos dividir as partes:
- selecione algumas coisas de
my_table
... - onde
user_2
=22 - e
timestamp
=(algum valor, vamos deixar de lado por enquanto) - limite 1
Agora, voltando ao
timestamp
value, ele vem de sua subconsulta:SELECT MAX( timestamp ) FROM my_table
Observe que esta subconsulta não restringe nenhuma linha com base em
user_2
-- ele pergunta qual é o timestamp máximo em toda a tabela . Esse timestamp máximo é o primeiro em sua tabela acima:(user_1 =23, user_2 =25, timestamp =2012-08-10 22:00:00). Então, vamos conectar isso de volta à consulta de nível superior:
- selecione algumas coisas de
my_table
... - onde usuário_2 =22
- e carimbo de data/hora =2012-08-10 22:00:00
- limite 1
... e você pode ver que não há essa linha.