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
Edytuj:
Przy okazji, jeśli jesteś ciekawy, dlaczego Twoje pierwotne zapytanie nie zadziałało, podzielmy elementy:
- wybierz jakieś rzeczy z
my_table
... - gdzie
user_2
=22 - i
timestamp
=(jaka wartość, na razie odłóżmy ją na bok) - limit 1
A teraz wracając do tego timestamp
wartość, pochodzi z podzapytania:
SELECT MAX( timestamp ) FROM my_table
Zauważ, że to podzapytanie nie ogranicza żadnych wierszy na podstawie user_2
-- pyta o maksymalny znacznik czasu w całej tabeli . Maksymalna sygnatura czasowa jest pierwszą w powyższej tabeli:(user_1 =23, user_2 =25, timestamp =2012-08-10 22:00:00).
Więc podłączmy to z powrotem do zapytania najwyższego poziomu:
- wybierz jakieś rzeczy z
my_table
... - gdzie użytkownik_2 =22
- i znacznik czasu =2012-08-10 22:00:00
- limit 1
... i widać, że nie ma takiego rzędu.