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
Modifier :
Au fait, au cas où vous seriez curieux de savoir pourquoi votre requête d'origine n'a pas fonctionné, décomposons les éléments :
- sélectionnez des éléments dans
my_table
... - où
user_2
=22 - et
timestamp
=(une certaine valeur, laissons-la de côté pour l'instant) - limite 1
Maintenant, revenons à cet timestamp
valeur, elle provient de votre sous-requête :
SELECT MAX( timestamp ) FROM my_table
Notez que cette sous-requête ne restreint aucune ligne basée sur user_2
-- il demande quel est l'horodatage maximum dans toute la table . Cet horodatage maximum est le premier dans votre tableau ci-dessus :(user_1 =23, user_2 =25, timestamp =2012-08-10 22:00:00).
Relions donc cela à la requête de niveau supérieur :
- sélectionnez des éléments dans
my_table
... - où user_2 =22
- et horodatage =2012-08-10 22:00:00
- limite 1
... et vous pouvez voir qu'il n'y a pas une telle rangée.