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
Modifica:
A proposito, se sei curioso di sapere perché la tua query originale non ha funzionato, analizziamo i pezzi:
- seleziona alcune cose da
my_table
... - dove
user_2
=22 - e
timestamp
=(qualche valore, mettiamolo da parte per ora) - limite 1
Ora, tornando a quel timestamp
valore, proviene dalla tua sottoquery:
SELECT MAX( timestamp ) FROM my_table
Tieni presente che questa sottoquery non limita le righe in base a user_2
-- chiede qual è il timestamp massimo nell'intera tabella . Quel timestamp massimo è il primo nella tabella sopra:(user_1 =23, user_2 =25, timestamp =2012-08-10 22:00:00).
Quindi, ricolleghiamolo alla query di primo livello:
- seleziona alcune cose da
my_table
... - dove utente_2 =22
- e timestamp =10-08-2012 22:00:00
- limite 1
... e puoi vedere che non c'è una tale riga.